dotfiles

My dotfiles.
git clone git://git.ryanmj.xyz/dotfiles.git
Log | Files | Refs | LICENSE

json.jsf.in (3590B)


      1 # JSON highlighter per json.org
      2 
      3 # Written by Rebecca Turner (@ReBecaOrg)
      4 
      5 # Define colors
      6 
      7 =Idle
      8 =Comma
      9 =PairSep
     10 =Bracket	magenta
     11 =Brace		magenta
     12 =Number		cyan
     13 =String		cyan
     14 =StringEscape	cyan bold
     15 =Boolean	cyan
     16 =Null		cyan
     17 
     18 =Bad		red bold inverse # Syntax errors detected by the highlighter
     19 
     20 =ERROR		bold yellow bg_red # Errors in the highlighter itself
     21 
     22 :json Idle
     23 	*			end		noeat call=.value()
     24 	" \t\n"			json
     25 
     26 :end Idle
     27 	*			endBAD		noeat
     28 	" \t\n"			end
     29 
     30 :endBAD Bad
     31 	*			end
     32 
     33 .subr value
     34 
     35 :value Idle
     36 	*			valueBAD	noeat
     37 	"\""			end		noeat call=.string()
     38 	"-0-9"			end		noeat call=.number()
     39 	"tfn"			end		noeat call=.bareword()
     40 	"{"			end		noeat call=.object()
     41 	"["			end		noeat call=.array()
     42 
     43 :valueBAD Bad
     44 	*			value
     45 
     46 :end Idle
     47 	*			NULL		noeat return
     48 
     49 .end
     50 
     51 .subr object
     52 
     53 :object Brace
     54 	*			objectBAD	noeat
     55 	"{"			maybeempty
     56 
     57 :objectBAD ERROR
     58 	*			end
     59 
     60 :maybeempty Brace
     61 	*			key		noeat
     62 	" \t\n"			maybeempty
     63 	"}"			end		recolor=-1
     64 
     65 :key Idle
     66 	*			keyBAD		noeat
     67 	"\""			pairsep		noeat call=.string()
     68 	" \t\n"			key
     69 
     70 :keyBAD Bad
     71 	*			key
     72 
     73 :pairsep PairSep
     74 	*			pairsepBAD	noeat
     75 	":"			value
     76 	" \t\n"			pairsep
     77 
     78 :pairsepBAD Bad
     79 	*			pairsep
     80 
     81 :value Idle
     82 	*			nextpair	noeat call=.value()
     83 	" \t\n"			value
     84 
     85 :nextpair Comma
     86 	*			nextpairBAD	noeat
     87 	"}"			end		recolor=-1
     88 	","			key
     89 	" \t\n"			nextpair
     90 
     91 :nextpairBAD Bad
     92 	*			nextpair
     93 
     94 :end Brace
     95 	*			NULL		noeat return
     96 .end
     97 
     98 .subr array
     99 
    100 :array Bracket
    101 	*			arrayBAD	noeat
    102 	"["			maybeempty
    103 
    104 :arrayBAD ERROR
    105 	*			end
    106 
    107 :maybeempty Bracket
    108 	*			value		noeat
    109 	" \t\n"			maybeempty
    110 	"]"			end		recolor=-1
    111 
    112 :value Idle
    113 	*			nextvalue	noeat call=.value()
    114 	" \t\n"			value
    115 
    116 :nextvalue Comma
    117 	*			nextvalueBAD	noeat
    118 	"]"			end		recolor=-1
    119 	","			value
    120 	" \t\n"			nextvalue
    121 
    122 :nextvalueBAD Bad
    123 	*			nextvalue
    124 
    125 :end Bracket
    126 	*			NULL		noeat return
    127 
    128 .end
    129 
    130 .subr string
    131 
    132 :string String
    133 	*			stringBAD	noeat
    134 	"\""			body
    135 
    136 :stringBAD ERROR
    137 	*			end
    138 
    139 :body String
    140 	*			body
    141 	"\""			end
    142 	"\\"			escape		recolor=-1
    143 
    144 :escape StringEscape
    145 	*			escapeBAD	recolor=-2 noeat
    146 	"\"/bfnrt\\"		body
    147 	"u"			unicode1
    148 
    149 :escapeBAD Bad
    150 	*			body
    151 
    152 :unicode1 StringEscape
    153 	*			unicodeBAD	recolor=-3 noeat
    154 	"0-9a-fA-F"		unicode2
    155 
    156 :unicode2 StringEscape
    157 	*			unicodeBAD	recolor=-4 noeat
    158 	"0-9a-fA-F"		unicode3
    159 
    160 :unicode3 StringEscape
    161 	*			unicodeBAD	recolor=-5 noeat
    162 	"0-9a-fA-F"		unicode4
    163 
    164 :unicode4 StringEscape
    165 	*			unicodeBAD	recolor=-6 noeat
    166 	"0-9a-fA-F"		body
    167 
    168 :unicodeBAD Bad
    169 	*			body
    170 
    171 :end Idle
    172 	*			NULL		noeat return
    173 
    174 .end
    175 
    176 .subr bareword
    177 
    178 :bareword Idle
    179 	*			body		noeat mark buffer
    180 
    181 :body Bad
    182 	*			end		noeat markend strings
    183 	"true"			boolean
    184 	"false"			boolean
    185 	"null"			null
    186 	
    187 done
    188 	"truefalsn"		body
    189 
    190 :boolean Boolean
    191 	*			end		noeat
    192 
    193 :null Null
    194 	*			end		noeat
    195 
    196 :end Idle
    197 	*			NULL		noeat return
    198 
    199 .end
    200 
    201 .subr number
    202 
    203 :number Number
    204 	*			numberBAD
    205 	"0-9"			numberA		noeat
    206 	"-"			numberA
    207 
    208 :numberBAD ERROR
    209 	*			end
    210 
    211 :numberA Number
    212 	"0"			decimalpoint
    213 	"1-9"			integer
    214 
    215 :integer Number
    216 	*			end		noeat
    217 	"0-9"			integer
    218 	"."			decimalpoint
    219 	"eE"			exponentpart
    220 
    221 :decimalpoint Number
    222 	*			end		noeat
    223 	"0-9"			decimalpointBAD
    224 	"eE"			exponentpart
    225 	"."			decimalpart
    226 
    227 :decimalpointBAD Bad
    228 	*			end
    229 
    230 :decimalpart Number
    231 	*			decimalpartBAD
    232 	"0-9"			decimalpartA
    233 
    234 :decimalpartBAD Bad
    235 	*			end
    236 
    237 :decimalpartA Number
    238 	*			end		noeat
    239 	"0-9"			decimalpartA
    240 	"eE"			exponentpart
    241 
    242 :exponentpart Number
    243 	*			exponentpartBAD
    244 	"-+"			exponentpartA
    245 	"0-9"			exponentpartB
    246 
    247 :exponentpartBAD Bad
    248 	*			end
    249 
    250 :exponentpartA Number
    251 	*			exponentpartBAD
    252 	"0-9"			exponentpartB
    253 
    254 :exponentpartB Number
    255 	*			end		noeat
    256 	"0-9"			exponentpartB
    257 
    258 :end Idle
    259 	*			NULL		noeat return
    260 
    261 .end