edn_turbo 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aa435bbcdadfbf654990bf8ee34e6830f5642d68
4
- data.tar.gz: 590f17ada5e84d90550d9b99b7b5afb035b0384a
3
+ metadata.gz: 41f78cfbb6704e1d0a4f7e1336d62609c3c10d18
4
+ data.tar.gz: 0a8080b1e3356f9e6f743b27670ee9d8ccba4769
5
5
  SHA512:
6
- metadata.gz: 2be6b790ab0072934c329c81d5e02e479749697521d54b561ccccd3c005e3d855085bb4c8e74c194e09fc540161871b8a921c6c1e35ce50bb4888fb926116677
7
- data.tar.gz: 7ecb72bba74f5e7016cad489e480aa74d496953d78218612de60d48ca6493a37fcbb8fc0e296a9fc6a1b9d84928fcb30fbd4f3293b89010783d8d41c31589f0f
6
+ metadata.gz: b45b5f73a05bee804ca8159d7e6b42ca39fde77545c7ed36a67b5f1197e7ac88e45a2e41a08179eba2f8ad6f7f5ab5bc51ee9f67cbbd12d8dbdbe0a95679df33
7
+ data.tar.gz: 98f1c888c9eeb40fabd89f48a81a9e8178321393cb6f74e49d078b1ae8e1e1f39be8653c7bda51f37a45811cbcca97a99505439c0afa052da65fe4da25b148fe
data/README.md CHANGED
@@ -5,10 +5,11 @@ Ruby C-extension for parsing EDN files.
5
5
 
6
6
  Written based on the functionality of
7
7
  [edn](https://github.com/relevance/edn-ruby) but with the goal of
8
- achieving much faster parsing. Currently supports a subset of the EDN
9
- spec, primarily that created from dumping ruby object data in EDN
10
- format. Support for tagged elements, sets, and full unicode is coming
11
- soon.
8
+ achieving much faster parsing.
9
+
10
+ As of v0.2.0, `edn_turbo` requires `edn` to support tagged elements
11
+ using a similar API and return types. The eventual goal is to bundle
12
+ `edn_turbo` as an optional parser for `edn`.
12
13
 
13
14
  Some quick sample runs comparing time output of file reads using `edn`
14
15
  and `edn_turbo`:
@@ -52,11 +53,11 @@ Dependencies
52
53
  - [rake 10.3.2](http://rake.rubyforge.org)
53
54
  - [rake-compiler 0.9.2](http://rake-compiler.rubyforge.org)
54
55
  - [rice 1.7.0](http://rice.rubyforge.org)
56
+ - [edn 1.0.7](https://github.com/relevance/edn-ruby)
55
57
  - [icu4c](http://icu-project.org/apiref/icu4c/)
56
58
 
57
59
  `edn_turbo` uses a ragel-based parser but the generated .cc file is
58
- bundled so ragel should not need to be installed.
59
-
60
+ bundled so ragel should not need to be installed.
60
61
 
61
62
  Usage
62
63
  =====
@@ -68,3 +69,14 @@ Usage
68
69
  pp output if output != nil
69
70
  end
70
71
  ```
72
+
73
+ Known problems
74
+ ==============
75
+ As of v0.2.0:
76
+
77
+ - Need to support stand-alone `-` and `+` symbols as well as named
78
+ symbols with a leading `-`. The current set of parsers expect only
79
+ numeric values to optionally lead with a `-` so support for the
80
+ other two cases requires refactoring of the parser logic
81
+ - Need to check handling of discards at the root level. Discards
82
+ within containers looks to work 100% as far as I know.
data/Rakefile CHANGED
@@ -7,7 +7,6 @@ NAME = 'edn_turbo'
7
7
  LIB_DIR = "lib/#{NAME}"
8
8
  EXT_BUNDLE = "#{LIB_DIR}/#{NAME}.#{RbConfig::CONFIG['DLEXT']}"
9
9
 
10
-
11
10
  EXT_PATH = "ext/#{NAME}"
12
11
  RAGEL_PARSER_SRC = "edn_parser.rl"
13
12
  RAGEL_PARSER_SRC_PATH = "#{EXT_PATH}/#{RAGEL_PARSER_SRC}"
@@ -23,6 +22,8 @@ task :chmod do
23
22
  File.chmod(0775, EXT_BUNDLE)
24
23
  end
25
24
 
25
+ CLEAN.include(["*.png", "*.gem"])
26
+
26
27
  task :ragel => GEN_CC_PARSER_SRC_PATH
27
28
 
28
29
 
@@ -34,9 +35,11 @@ file GEN_CC_PARSER_SRC_PATH => RAGEL_PARSER_SRC_PATH do
34
35
  end
35
36
  end
36
37
 
37
- task :graph do
38
+
39
+ task :graph, [:machine] do |t, args|
40
+ args.with_defaults(:machine => 'EDN_value')
38
41
  TMPFILE='/tmp/ragel_edn'
39
- MACHINE='EDN_value'
42
+ MACHINE=args[:machine]
40
43
 
41
44
  # assumes graphviz is installed
42
45
  sh "ragel -Vp -S #{MACHINE} -o #{TMPFILE} #{EXT_PATH}/#{RAGEL_PARSER_SRC} && dot -Tpng #{TMPFILE} -o #{MACHINE}.png"