jison 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c90e93099a37058ff03c8a234fca8a5fc8a44770
4
+ data.tar.gz: 877425fba83c9d667b4cae0c995e004f08c6f47f
5
+ SHA512:
6
+ metadata.gz: 4ef21c4e0d28be3758db28929f1adcea509fed94a7a839923d566eda4c63258c98503d2f7839162a96e8f30329346d9643ccd59d9473cdcb983b4315ef17ed04
7
+ data.tar.gz: 3dc527835a8f2f87cdb7f5132d03c8365997a102b58b1ea22bee3b32809f2ca0c98f19b41a28b66b76585ceede0ee50cbf0b47f69ce945e914ea5822daf4c8f4
data/lib/jison.rb ADDED
@@ -0,0 +1,17 @@
1
+ require 'open3'
2
+ require 'jison/execution_error'
3
+ require 'jison/version'
4
+
5
+ module Jison
6
+ class << self
7
+ def version
8
+ Version.from_string `jison --version`
9
+ end
10
+
11
+ def parse(grammar)
12
+ stdout, stderr, status = Open3.capture3('jison', :stdin_data => grammar)
13
+ return stdout if status.exitstatus.zero?
14
+ raise ExecutionError.new(stderr, status.exitstatus)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ module Jison
2
+ class ExecutionError < RuntimeError
3
+ attr_reader :exit_code
4
+
5
+ def initialize(message, exit_code)
6
+ super(message)
7
+ @exit_code = exit_code
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,43 @@
1
+ module Jison
2
+ class Version
3
+ include Comparable
4
+
5
+ attr_reader :major, :minor, :micro
6
+
7
+ def self.from_string(string)
8
+ version = string.gsub(/^\s+|\s+$/, '').split('.').map(&:to_i)
9
+ new(*version)
10
+ end
11
+
12
+ def initialize(major, minor=0, micro=0)
13
+ @major, @minor, @micro = major, minor, micro
14
+ end
15
+
16
+ def ==(other)
17
+ major == other.major \
18
+ && minor == other.minor \
19
+ && micro == other.micro
20
+ end
21
+
22
+ def <=>(other)
23
+ case other
24
+ when Version
25
+ cmp = major - other.major
26
+ return cmp unless cmp.zero?
27
+ cmp = minor - other.minor
28
+ return cmp unless cmp.zero?
29
+ micro - other.micro
30
+ when String
31
+ self <=> Version.from_string(other)
32
+ when Fixnum
33
+ major - other
34
+ else
35
+ raise RuntimeError.new("Cannot compare against #{other.class}: #{other.inspect}")
36
+ end
37
+ end
38
+
39
+ def to_s
40
+ "#{major}.#{minor}.#{micro}"
41
+ end
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jison
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Dylon Edwards
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2
14
+ Wrapper around the jison, npm module that compiles Jison grammars and
15
+ returns the corresponding, JavaScript text.
16
+ email: dylon.edwards@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/jison/version.rb
22
+ - lib/jison/execution_error.rb
23
+ - lib/jison.rb
24
+ homepage: https://github.com/dylon/ruby-jison
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '>='
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.0.14
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: Ruby, Jison Compiler
48
+ test_files: []