h&L-Q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred "%&(3Z.bbcode Argument to bbcode Argument to bbcode Argument to bbcodeNumeric 1, 2, 3,.. bbcodeArabic I, II, III,.. bbcodeArabic i, ii, iii,.. bbcodeAlphabetical A, B, C,.. bbcodeAlphabetical a, b, c,.. bbcode Argument to bbcode4Used for building BBCode safely. Instead of passing ? to builder functions, you pass values of types that implement . Then ' is used to convert that value to Text.bbcodeType of an element. ,+ declares three constructors for elements: -, ., /. But  can be split into four cateogories: 1) void elements, 2) simple elements, 3) elements with optional argument, 4) element with one argument%There is no enforcement of combining , constuctors and # values, that means you can create ElSimple HR (ElText "smth") but that would make no sense.  : would emit a runtime error if you try to pass such value.bbcode void elementbbcode void elementbbcode void elementbbcode void elementbbcodesimple elementbbcodesimple elementbbcodesimple elementbbcodesimple elementbbcodesimple elementbbcodesimple elementbbcodesimple element bbcodesimple element!bbcodesimple element"bbcodeelement with optional argument#bbcodeelement with optional argument$bbcodeelement with optional argument%bbcodeelement with optional argument&bbcodeelement with optional argument'bbcodeelement with one argument(bbcodeelement with one argument)bbcodeelement with one argument*bbcodeelement with one argument+bbcodeelement with one argument,bbcode BBCode AST-bbcode3Element that has neither closing part nor arguments-  represents "[hr]".bbcode.Element that has closing part but no arguments.  (0 "abc") represents  "[b]abc[/b]"/bbcode6Element that has closing part and exactly one argument/ ' "red" (0 "I am red") represents "[color=red]I am red[/color]"0bbcode Plain text0 "I am text" represents  "I am text"@1bbcode?@ABCDEFGHIJKLMNOPQRSTUVWX  Safe-Inferred"%&(3bbcode)Get representation of element in form of IsString a => a elName HR == "hr" elName Align == "align" elName ListElement == "*"bbcode"Elements that can be opening e.g. HR: "[hr]" or Bold: "[bold]"bbcode8Elements that can be opening and can take argument e.g. Box:  "[box=right]"bbcode"Elements that can be closing e.g. Bold:  "[/bold]"bbcodeCombine two predicates with OR  +*('%#!"&) $,10/-.23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX  Safe-Inferred"%&(3YbbcodeSerialize BBCode AST9Should be reversible by parsing, but it is not guaranteedCan cause error at runtime if unrepresentable element is passed, e.g. >>> pretty $ ElSimple HR "abc" Prelude.undefinedY Safe-Inferred"%&(3Zbbcode&Parser with reader transformer inside.8Reader environment contains current context for element.It is used for j because ("[oneline][oneline][/oneline][/oneline]"! should produce error. Same with i Also used by : to end parsing on closing element of current environment.&parseTestEnv bbcode "[i]Bread[/b][/i]"$ElSimple Italic (ElText "Bread[/b]")Notice it parsed "[/b]".  finishes parsing only on closing element that matches last parsed opening[bbcode specialized for Z\bbcode specialized for Z]bbcode specialized for Z). Passes empty list to inner reader monadbbcodeSame as ] but works with HLS's codelenses^bbcodeAll parsers used by _ and `Keys are element names and values are associated element parsers.Values are lists because some elements have optional element. That means they are two separate parsers, e.g. " element parsers are n (simple element) and t (element with parameter)_bbcodeParse zero or more BBCode elements Doesn't necessarily return value wrapped in 1 , it returns ( :: BBCode) if it parses no elements, or just element if parses just one element. Otherwise it is 1`bbcode Similar to _ but parses one or more elements&Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred"%&(3*bbcodeNewline nl == 'text' "\n"bbcode text == 'ElText'bbcodeWrap [,] in 1bbcodeHorizontal line hr == 'ElVoid' 'HR'bbcode Line break br == 'ElVoid' 'BR'bbcode clear == 'ElVoid' 'Clear'bbcode)Notice it is not a function, but a value.listEl represents "[*]"  listEl == 'ElVoid' 'ListElement'bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode  element contains plain textbbcode! element contains plain textbbcode, , , and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcodeTakes image URLbbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode4bold, italic, underline, and all the rest functions , -> ,; work the same way by wrapping argument in another element.bbcode'Each element of list is prepended with  listElement, meaning you can't create list with contents but without elementslist [bold "10", italic "15"]ElSimple List (ElDocument [ElVoid ListElement,ElSimple Bold (ElText "10"),ElVoid ListElement,ElSimple Italic (ElText "15")])bbcodeLike  but with alignment argumentbbcodeLike  but with alignment argumentbbcode Named quotebbcode Named spoilerbbcode Ordered listlistFlavor LatinUpper [bold "I am bald", boxAlign BoxRight "get boxxxed"]ElArg List "A" (ElDocument [ElVoid ListElement,ElSimple Bold (ElText "I am bald"),ElVoid ListElement,ElArg Box "right" (ElText "get boxxxed")])bbcodeChange color of inner BBCode First argument is either color name (e.g. blue) or hex color(e.g. #333 or #151515)bbcodeCreate a hyperlink*first argument is expected to be valid URLbbcode Change font size of inner bbcodearg D [10, 29] and arg is naturalbbcodeChange font of inner BBCode$argument should be a valid font name1Main module exporting builder interface and typesGPL-3 experimentalGHC Safe-Inferred"%&(3+p  $)&"!#%'(*+,-./01Y\_,-./01 $)&"!#%'(*+  Y_\ Safe-Inferred"%&(3,'23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX'463529:78=;@AWCFODMTXBPJGSEKLNQVRIUH Safe-Inferred"%&(3-&Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&Z[\]^_`abcdefghijklmntoupvqwrsxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh ijklmnopqrstuvwxyz{|}~pqrstuvwxy{}~            bbcode-0.1.0.1-inplace Text.BBCodeText.BBCode.LensText.BBCode.ParserText.BBCode.Internal.TypesboxAlign imageAlign listFlavoralignprettyData.MapMapText.BBCode.Internal.HelperText.BBCode.Internal.PrettyText.BBCode.Internal.ParserText.BBCode.Internal.Builder BoxPositionBoxLeft BoxCenterBoxRight ImagePosition ImageLeft ImageRight ListFlavorRoman ArabicUpper ArabicLower LatinUpper LatinLower AlignPosition AlignLeft AlignRight AlignCenter AlignJustify IsArgument toArgumentElHRBRClear ListElementBoldItalic Underline StrikethroughIndentNFOOnelineCode PreformattedBoxImageQuoteSpoilerListColorURLSizeAlignFontBBCodeElVoidElSimpleElArgElText ElDocument_ElVoid _ElSimple_ElArg_ElText _ElDocument _AlignLeft _AlignRight _AlignCenter _AlignJustify_Roman _ArabicUpper _ArabicLower _LatinUpper _LatinLower _ImageLeft _ImageRight_HR_BR_Clear _ListElement_Bold_Italic _Underline_Strikethrough_Indent_NFO_Oneline_Code _Preformatted_Box_Image_Quote_Spoiler_List_Color_URL_Size_Align_FontParser runParserEnvrunParserMaybeEnv parseTestEnvparsersbbcodebbcode1hrbrclearbolditalic underline strikethroughindentnfoonelineeverythingInElementcode preformattedboximagequotespoiler listElementlist quoteNamed spoilerNamed colorNamecolorHexurlsizefont plaintextnltextdoclistElprecolor text-1.2.5.0Data.Text.InternalText$fIsStringBBCode$fMonoidBBCode $fShowBBCode$fOrdEl$fEnumEl $fBoundedElelNameelementOpeningselementArgOpeningselementClosings|||base Data.StringIsString fromStringData.Traversable TraversabletraverseData.Functor.Contravariant Contravariant contramap>$Data.Bifunctor BifunctorbimapData.Functor.IdentityIdentity runIdentityData.Functor.ConstConstgetConstData.Type.Equality:~:Refl Data.Function& Data.Functor<&>indexed-traversable-0.1.2.1-af62253f0c7c97971365accda91b0e020965fb1ee024d01ba57672f129d3bc3bData.Foldable.WithIndexitoListifoldlMifoldrMifind iconcatMapiforM_imapM_ifor_ itraverse_noneinoneiallianyData.Traversable.WithIndex imapAccumL imapAccumRiforMimapMifor WithIndexFunctorWithIndeximapFoldableWithIndexifoldl'ifoldr'ifoldlifoldrifoldMap ifoldMap'TraversableWithIndex itraverseprofunctors-5.6.2-f4d50e9b3fc0dc5cfabf85ff52cbee9009d79c7b04e5402487b0bcc9255a9120Data.Profunctor.Unsafe Profunctordimaprmaplmaplens-5.2.2-3d9de0beacf63b804ad60b78ef973f68b4bc0d4aebe1e79c3bd7232503ffbca7Control.Lens.THdefaultFieldRulesmakeFieldsNoPrefix makeFieldsabbreviatedNamerabbreviatedFieldsclassUnderscoreNoPrefixNamerclassUnderscoreNoPrefixFieldscamelCaseNamercamelCaseFieldsunderscoreNamerunderscoreFields makeWrappeddeclareLensesWith declareFieldsdeclareWrapped declarePrismsdeclareClassyFor declareClassydeclareLensesFor declareLensesmakeLensesWith makeClassyFor makeLensesFor makeClassy_ makeClassy makeLenses classyRules_ classyRules mappingNamerlookingupNamer lensRulesForunderscoreNoPrefixNamer lensRules lensClass lensField createClassgenerateLazyPatternsgenerateUpdateableOpticsgenerateSignatures simpleLensesControl.Lens.Internal.FieldTH LensRules FieldNamerDefNameTopName MethodName ClassyNamerControl.Lens.Internal.PrismTHmakeClassyPrisms makePrismsControl.Lens.AtiatsansixAtiix icontainsIndexContainscontainsIxValueIxedixAtatControl.Lens.EachEacheachControl.Lens.Platedgplate1gplateparts composOpFoldparaparaOf holesOnOfholesOnholes contextsOnOf contextsOn contextsOfcontextstransformMOnOf transformMOf transformMOn transformM transformOnOf transformOf transformOn transform cosmosOnOfcosmosOncosmosOfcosmos universeOnOf universeOn universeOfuniverse rewriteMOnOf rewriteMOn rewriteMOfrewriteM rewriteOnOf rewriteOn rewriteOfrewritechildrendeep...PlatedplateGPlatedGPlated1Control.Lens.ZoomZoomed MagnifiedZoomzoomMagnifymagnifyControl.Lens.Wrappedalafala _Unwrapping _Wrapping _Unwrapping' _Wrapping'op _Unwrapped_Wrapped _Unwrapped' _GWrapped'Wrapped Unwrapped _Wrapped' Rewrapped RewrappingControl.Lens.Consunsnocsnoc|>_last_init_tail_headunconscons<|:<:>Cons_ConsSnoc_SnocControl.Lens.EmptyEmptyAsEmpty_EmptyControl.Lens.Isocoerced secondingfirsting bimappingrmappinglmapping dimapping contramappingimagmamagma involutedreversedlazystrictswappedflipped uncurriedcurriedanonnon'nonmappingenumunderxplatfxplataufaucloneIsowithIsofromisoStrictLazySwappedReversedAnIsoAnIso'Control.Lens.Equality withEquality fromLeibniz' fromLeibniz underEquality overEquality equality'equality cloneEqualitysimplesimplyfromEqmapEqsubstEqrunEq Identical AnEquality AnEquality'Control.Lens.Indexed itraverseByOf itraverseBy ifoldMapByOf ifoldMapBy itraversedifoldedimappedindexindicesicompose<.> reindexed selfIndex.><.Control.Lens.Reified ReifiedLensLensrunLens ReifiedLens'ReifiedIndexedLens IndexedLensrunIndexedLensReifiedIndexedLens'ReifiedIndexedTraversalIndexedTraversalrunIndexedTraversalReifiedIndexedTraversal'ReifiedTraversal Traversal runTraversalReifiedTraversal' ReifiedGetterGetter runGetterReifiedIndexedGetter IndexedGetterrunIndexedGetter ReifiedFoldFoldrunFoldReifiedIndexedFold IndexedFoldrunIndexedFold ReifiedSetterSetter runSetterReifiedSetter'ReifiedIndexedSetter IndexedSetterrunIndexedSetterReifiedIndexedSetter' ReifiedIsoIsorunIso ReifiedIso' ReifiedPrismPrismrunPrism ReifiedPrism'Control.Lens.LevelilevelslevelsControl.Lens.Traversal sequenceByOf traverseByOf confusingdeepOffailing ifailoverfailoverelements elementsOfelement elementOfignored traversed64 traversed1 traversed imapAccumLOf imapAccumROfiforMOfimapMOfiforOf itraverseOfcloneIndexedTraversal1cloneIndexPreservingTraversal1cloneTraversal1cloneIndexedTraversalcloneIndexPreservingTraversalcloneTraversaldroppingtakingbesideboth1bothholes1OfholesOfunsafeSingularsingulariunsafePartsOf'unsafePartsOf'iunsafePartsOf unsafePartsOf ipartsOf'partsOf'ipartsOfpartsOfilocilociscanl1Ofscanr1Of mapAccumLOf mapAccumROf transposeOf sequenceOfforMOfmapMOf sequenceAOfforOf traverseOf traversal ATraversal ATraversal' ATraversal1 ATraversal1'AnIndexedTraversalAnIndexedTraversal1AnIndexedTraversal'AnIndexedTraversal1' Traversing Traversing1 Traversing' Traversing1' TraverseMin traverseMin TraverseMax traverseMaxControl.Lens.Fold foldMapByOffoldByOfidroppingWhile itakingWhile ifiltered findIndicesOf findIndexOf elemIndicesOf elemIndexOf^@?!^@?^@.. itoListOf ifoldlMOf ifoldrMOf ifoldlOf' ifoldrOf'ifindMOfifindOf iconcatMapOfiforMOf_imapMOf_iforOf_ itraverseOf_inoneOfiallOfianyOfifoldlOfifoldrOf ifoldMapOf backwardsipreusespreusesipreusepreuse ipreviewspreviewsipreviewpreviewiprehasn'thasfoldlMOffoldrMOf foldl1Of' foldr1Of'foldlOf'foldrOf'foldl1Offoldr1OflookupOffindMOffindOf minimumByOf maximumByOf minimum1Of minimumOf maximum1Of maximumOf notNullOfnullOflast1OflastOffirst1OffirstOf^?!^?lengthOfconcatOf concatMapOf notElemOfelemOfmsumOfasumOf sequenceOf_forMOf_mapMOf_ sequence1Of_for1Of_ traverse1Of_ sequenceAOf_forOf_ traverseOf_sumOf productOfnoneOfallOfanyOforOfandOf^.. toNonEmptyOftoListOffoldlOffoldrOffoldOf foldMapOflinedworded droppingWhile takingWhile filteredByfilterediteratedunfoldedcycled replicatedrepeatedfolded64folded ifoldringfoldringifoldingfoldingControl.Lens.Prism_Shownearlyonly_Void_Nothing_Just_Right_Left matching'matchingisn'tbelowasidewithoutoutsideprism'prism clonePrism withPrismAPrismAPrism'PrefixedprefixedSuffixedsuffixedControl.Lens.Review reviewingreusesreusereviews#reviewreununtoControl.Lens.Gettergetting^@.iusesiuseiviewsiview ilistenings listenings ilistening listeningusesuse^.viewsviewilikelikeitotoGettingIndexedGetting AccessingControl.Lens.Tuple_19'_18'_17'_16'_15'_14'_13'_12'_11'_10'_9'_8'_7'_6'_5'_4'_3'_2'_1'Field1_1Field2_2Field3_3Field4_4Field5_5Field6_6Field7_7Field8_8Field9_9Field10_10Field11_11Field12_12Field13_13Field14_14Field15_15Field16_16Field17_17Field18_18Field19_19Control.Lens.Lensfusinglast1head1uniteddevoid<#=<#~#%%=<#%=<#%~#%=#=#%%~#%~#~storing^#<<%@=<%@=%%@=%%@~<<%@~<%@~overA<<>=<<>~<<~<<<>=<<&&=<<||=<<**=<<^^=<<^=<~<<&&~<<||~<<**~<<^^~<<^~<=<>~