brick开源项目

我要开发同款
匿名用户2021年12月17日
30阅读
开发技术C/C++
所属分类应用工具、终端/远程登录
授权协议View license

作品详情

brickisaHaskellterminaluserinterface(TUI)programmingtoolkit.Touseit,youwriteapurefunctionthatdescribeshowyouruserinterfaceshouldlookbasedonyourcurrentapplicationstateandyouprovideastatetransformationfunctiontohandleevents.

brickexposesadeclarativeAPI.UnlikemostGUItoolkitswhichrequireyoutowritealongandtedioussequenceof"createawidget,nowbindaneventhandler",brickjustrequiresyoutodescribeyourinterfaceusingasetofdeclarativelayoutcombinators.

Underthehood,thislibrarybuildsuponvty,sosomeknowledgeofVtywillbehelpfulinusingthislibrary.

Example

Here'sanexampleinterface(seeprograms/ReadmeDemo.hs):

withBorderStyleunicode$borderWithLabel(str"Hello!")$(center(str"Left")<+>vBorder<+>center(str"Right"))

Result:

┌─────────Hello!─────────┐│││││││Left│Right│││││││└────────────────────────┘FeaturedProjects

Togetanideaofwhatsomepeoplehavedonewithbrick,takealookattheseprojects.Ifyouhavemadesomethingandwouldlikemetoincludeit,getintouch!

ProjectDescriptiontetrisAnimplementationoftheTetrisgamegotta-go-fastAtypingtutorhaskell-playerAnafplayfrontendmushuAnMPDclientmatterhornAclientforMattermostviewprofAGHCprofileviewertartAmouse-drivenASCIIartdrawingprogramsilly-joyAninterpreterforJoyhermsAcommand-linetoolformanagingkitchenrecipespurebredAmailuseragent2048HaskellAnimplementationofthe2048gamebhoogleAHoogleclientclifmAfilemanagertowerHanoiAnimatedsolutionstoTheTowerofHanoiVOIDSPACEAspace-themedtyping-tutorgamesolitaireThecardgamesudoku-tuiASudokuimplementationsummoner-tuiAninteractivefrontendtotheSummonertoolwrapping-editorAnembeddableeditorwithsupportforBrickgit-brunchAgitbranchcheckoututilityhascardAprogramforreviewing"flashcard"notesttymeATUIforHarvestghcupATUIforghcup,theHaskelltoolchainmanagercbookviewATUIforexploringpolyglotchessopeningbookfilesthockAmodernTUItypinggamefeaturingonlineracingagainstfriendsfifteenAnimplementationofthe15puzzlemazeABrick-basedmazegamepboyAtinyPDForganizerhyahtzee2FamousYahtzeedicegamebrewsageATUIforHomebrewsandwichAtestframeworkwithaTUIinterfaceyoubrickAfeedaggregatorandlauncherforYoutubechannelsswarmA2Dprogrammingandresourcegatheringgame

Thesethird-partypackagesalsoextendbrick:

ProjectDescriptionbrick-filetree[Hackage]AwidgetforexploringadirectorytreeandselectingorflaggingfilesanddirectoriesReleaseAnnouncements/News

FindoutaboutbrickreleasesandothernewsonTwitter:

https://twitter.com/brick_haskell/

GettingStarted

Checkoutthemanydemoprogramstogetafeelfordifferentaspectsofthelibrary:

$cabalnew-build-fdemos$finddist-newstyle-typef-name\*-demo

Togetstarted,seetheuserguide.

Documentation

Documentationforbrickcomesinavarietyofforms:

TheofficialbrickuserguideSamuelTay'sbricktutorialHaddock(allmodules)Demoprograms(Screenshots)FAQFeatureOverview

brickcomeswithabunchofbatteriesincluded:

VerticalandhorizontalboxlayoutwidgetsBasicsingle-andmulti-linetexteditorwidgetsListwidgetProgressbarwidgetSimpledialogboxwidgetBorder-drawingwidgets(putbordersaroundorinbetweenthings)GenericscrollableviewportsGeneral-purposelayoutcontrolcombinatorsExtensiblewidget-buildingAPIUser-customizableattributethemesType-safe,validatedinputformAPI(seetheBrick.Formsmodule)AfilesystembrowserforfileanddirectoryselectionBorderscanbeconfiguredtoautomaticallyconnect!Brick-UsersDiscussion

Thebrick-usersGoogleGroup/e-maillistisaplacetodiscusslibrarychanges,givefeedback,andaskquestions.Youcansubscribeat:

https://groups.google.com/group/brick-users

Status

TherearesomeplaceswereIhavedeliberatelychosentoworryaboutperformancelaterforthesakeofspendingmoretimeonthedesign(andtowaitonperformanceissuestoarisefirst).brickisalsosomethingofanexperimentalprojectofmineandsomeaspectsofthedesigninvolvetrade-offsthatmightnotberightforyourapplication.Brickisnotintendedtobeallthingstoallpeople;rather,Iwantittoprovideagoodfoundationforbuildingcomplexterminalinterfacesinadeclarativestyletotakeawayspecificheadachesofbuilding,modifying,andworkingwithsuchinterfaces,allwhileseeinghowfarwecangetwithapurefunctiontospecifytheinterface.

brickexportsanextensionAPIthatmakesitpossibletomakeyourownpackagesandwidgets.Ifyouusethat,you'llalsobehelpingtotestwhethertheexportedinterfaceisusableandcomplete!

Reportingbugs

PleasefilebugreportsasGitHubissues.Forbestresults:

Includetheversionsofrelevantsoftwarepackages:yourterminalemulator,brick,ghc,andvtywillbethemostimportantones.

Clearlydescribethebehavioryouexpected...

...andincludeaminimaldemonstrationprogramthatexhibitsthebehavioryouactuallyobserved.

Contributing

Ifyoudecidetocontribute,that'sgreat!Herearesomeguidelinesyoushouldconsidertomakesubmittingpatcheseasierforallconcerned:

Ifyouwanttotakeonbigthings,talktomefirst;let'shaveadesign/visiondiscussionbeforeyoustartcoding.CreateaGitHubissueandwecanusethatastheplacetohashthingsout.PleasemakechangesconsistentwiththeconventionsI'veusedinthecodebase.PleaseadjustorprovideHaddockand/oruserguidedocumentationrelevanttoanychangesyoumake.Newcommitsshouldbe-Wallclean.PleasedoNOTincludepackageversionchangesinyourpatches.Packageversionchangesareonlydoneatreleasetimewhenthefullscopeofarelease'schangescanbeevaluatedtodeterminetheappropriateversionchange.
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论