ASCII art diagram converter: Difference between revisions
Content added Content deleted
Line 537: | Line 537: | ||
=={{header|Julia}}== |
=={{header|Julia}}== |
||
The validator() function can be customized. The one used only checks length. |
|||
<lang julia>diagram = """ |
<lang julia>diagram = """ |
||
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |
||
Line 582: | Line 583: | ||
binbyte(c) = string(parse(UInt8, c, base=16), base=2, pad=8) |
binbyte(c) = string(parse(UInt8, c, base=16), base=2, pad=8) |
||
hextobinary(s) = reduce(*, map(binbyte, map(x -> s[x:x+1], 1:2:length(s)-1))) |
hextobinary(s) = reduce(*, map(binbyte, map(x -> s[x:x+1], 1:2:length(s)-1))) |
||
validator(binstring, fields) = length(binstring) == sum(x -> x.bits, fields) |
|||
function bitreader(bitfields, hexdata) |
function bitreader(bitfields, hexdata) |
||
Line 587: | Line 589: | ||
println("Name Size Bits\n------- ---- ----------------") |
println("Name Size Bits\n------- ---- ----------------") |
||
b = hextobinary(hexdata) |
b = hextobinary(hexdata) |
||
@assert(validator(b, bitfields)) |
|||
for bf in bitfields |
for bf in bitfields |
||
pat = b[bf.fieldstart+1:bf.fieldend+1] |
pat = b[bf.fieldstart+1:bf.fieldend+1] |