violet 0.0.1
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.
- data/bin/violet +34 -0
- data/lib/violet.rb +22 -0
- data/lib/violet/lexer.rb +671 -0
- data/lib/violet/parser.rb +1440 -0
- data/lib/violet/token.rb +78 -0
- data/test/test_assertions.rb +550 -0
- data/test/test_violet.rb +36 -0
- metadata +90 -0
data/test/test_violet.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Violet
|
4
|
+
require "violet"
|
5
|
+
require "test_assertions"
|
6
|
+
require "minitest/unit"
|
7
|
+
|
8
|
+
# Create the lexer and parser unit test runners.
|
9
|
+
LexerTests = Class.new(MiniTest::Unit::TestCase)
|
10
|
+
ParserTests = Class.new(MiniTest::Unit::TestCase)
|
11
|
+
|
12
|
+
# Define each test case programmatically.
|
13
|
+
TEST_ASSERTIONS.each_with_index do |test, index|
|
14
|
+
# Extract the expected number of tokens.
|
15
|
+
expected = test.delete_at(1)
|
16
|
+
# Extract the message and program.
|
17
|
+
program, message = test.shift, test.pop
|
18
|
+
suffix = "#{index}_#{message.gsub(/\W+/, '_').downcase}"
|
19
|
+
|
20
|
+
# Create the parser unit test.
|
21
|
+
ParserTests.send(:define_method, "test_parser_#{suffix}") do
|
22
|
+
anticipated = expected.is_a?(Array) ? expected[1] : expected
|
23
|
+
assert_equal(anticipated, Violet::Parser.parse(program).size, message)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Create the lexer unit test.
|
27
|
+
LexerTests.send(:define_method, "test_lexer_#{suffix}") do
|
28
|
+
anticipated = expected.is_a?(Array) ? expected.first : expected
|
29
|
+
expressions = test.first
|
30
|
+
# Ensure that the expected and actual token counts match.
|
31
|
+
assert_equal(anticipated, Violet::Lexer.new(program).tokens(*expressions).size, message)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
MiniTest::Unit.autorun unless ENV["NORUN"]
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: violet
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Peter van der Zee
|
9
|
+
- Kit Cambridge
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-01-04 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: pal
|
17
|
+
requirement: &2151809920 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.1.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2151809920
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: minitest
|
28
|
+
requirement: &2151807300 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.5.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2151807300
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rake
|
39
|
+
requirement: &2151806260 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
type: :development
|
46
|
+
prerelease: false
|
47
|
+
version_requirements: *2151806260
|
48
|
+
description: Violet is a JavaScript parser inspired by Peter van der Zee's ZeParser.
|
49
|
+
email:
|
50
|
+
- github@qfox.nl
|
51
|
+
- kitcambridge@me.com
|
52
|
+
executables:
|
53
|
+
- violet
|
54
|
+
extensions: []
|
55
|
+
extra_rdoc_files: []
|
56
|
+
files:
|
57
|
+
- bin/violet
|
58
|
+
- lib/violet/lexer.rb
|
59
|
+
- lib/violet/parser.rb
|
60
|
+
- lib/violet/token.rb
|
61
|
+
- lib/violet.rb
|
62
|
+
- test/test_assertions.rb
|
63
|
+
- test/test_violet.rb
|
64
|
+
homepage: http://kitcambridge.github.com/violet
|
65
|
+
licenses:
|
66
|
+
- MIT
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options: []
|
69
|
+
require_paths:
|
70
|
+
- lib
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.9.1
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
requirements: []
|
84
|
+
rubyforge_project:
|
85
|
+
rubygems_version: 1.8.11
|
86
|
+
signing_key:
|
87
|
+
specification_version: 3
|
88
|
+
summary: A JavaScript parser.
|
89
|
+
test_files:
|
90
|
+
- test/test_violet.rb
|