q-language 1.0.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.
Files changed (41) hide show
  1. data/.gemtest +0 -0
  2. data/Rakefile +10 -0
  3. data/lib/q-language.rb +9 -0
  4. data/lib/q-language/device.rb +166 -0
  5. data/lib/q-language/environment.rb +358 -0
  6. data/lib/q-language/methods/array.rb +523 -0
  7. data/lib/q-language/methods/block.rb +26 -0
  8. data/lib/q-language/methods/class.rb +24 -0
  9. data/lib/q-language/methods/dynamic.rb +82 -0
  10. data/lib/q-language/methods/false.rb +47 -0
  11. data/lib/q-language/methods/hash.rb +351 -0
  12. data/lib/q-language/methods/implicit.rb +345 -0
  13. data/lib/q-language/methods/module.rb +39 -0
  14. data/lib/q-language/methods/nil.rb +47 -0
  15. data/lib/q-language/methods/number.rb +118 -0
  16. data/lib/q-language/methods/object.rb +155 -0
  17. data/lib/q-language/methods/string.rb +157 -0
  18. data/lib/q-language/methods/time.rb +110 -0
  19. data/lib/q-language/methods/token.rb +72 -0
  20. data/lib/q-language/methods/true.rb +14 -0
  21. data/lib/q-language/node.rb +45 -0
  22. data/lib/q-language/object.rb +125 -0
  23. data/lib/q-language/parser.rb +104 -0
  24. data/lib/q-language/writer.rb +90 -0
  25. data/test/methods/test_array.rb +191 -0
  26. data/test/methods/test_block.rb +66 -0
  27. data/test/methods/test_class.rb +34 -0
  28. data/test/methods/test_dynamic.rb +158 -0
  29. data/test/methods/test_false.rb +60 -0
  30. data/test/methods/test_hash.rb +10 -0
  31. data/test/methods/test_implicit.rb +332 -0
  32. data/test/methods/test_module.rb +55 -0
  33. data/test/methods/test_nil.rb +60 -0
  34. data/test/methods/test_number.rb +10 -0
  35. data/test/methods/test_object.rb +157 -0
  36. data/test/methods/test_string.rb +271 -0
  37. data/test/methods/test_time.rb +181 -0
  38. data/test/methods/test_token.rb +92 -0
  39. data/test/methods/test_true.rb +16 -0
  40. data/test/test.rb +23 -0
  41. metadata +103 -0
@@ -0,0 +1,155 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QObject < Q_Object
7
+ def and (object)
8
+ object
9
+ end
10
+
11
+ def array?
12
+ false
13
+ end
14
+
15
+ def block?
16
+ false
17
+ end
18
+
19
+ def break_if (&block)
20
+ if result = yield
21
+ env::break!
22
+ return value
23
+ end
24
+
25
+ result
26
+ end
27
+
28
+ def break_unless (&block)
29
+ unless result = yield
30
+ env::break!
31
+ return value
32
+ end
33
+
34
+ result
35
+ end
36
+
37
+ def choose (object_1, object_2)
38
+ object_1
39
+ end
40
+
41
+ def class?
42
+ false
43
+ end
44
+
45
+ def dup
46
+ value.dup
47
+ rescue TypeError
48
+ # Duplication is disallowed
49
+ value
50
+ end
51
+
52
+ def dynamic?
53
+ false
54
+ end
55
+
56
+ def eq? (object)
57
+ value == object
58
+ end
59
+
60
+ def eqq? (object)
61
+ value === object
62
+ end
63
+
64
+ def false?
65
+ false
66
+ end
67
+
68
+ def hash?
69
+ false
70
+ end
71
+
72
+ def if (&block)
73
+ env::jump! # skip the rest of the block
74
+ yield
75
+ end
76
+
77
+ def jump_if (&block)
78
+ if result = yield
79
+ env::jump!
80
+ return value
81
+ end
82
+
83
+ result
84
+ end
85
+
86
+ def jump_unless (&block)
87
+ unless result = yield
88
+ env::jump!
89
+ return value
90
+ end
91
+
92
+ result
93
+ end
94
+
95
+ def module?
96
+ false
97
+ end
98
+
99
+ def neq? (object)
100
+ value != object
101
+ end
102
+
103
+ def nil?
104
+ false
105
+ end
106
+
107
+ def not
108
+ false
109
+ end
110
+
111
+ def number?
112
+ false
113
+ end
114
+
115
+ def or (object)
116
+ value
117
+ end
118
+
119
+ def same? (object)
120
+ value.object_id == object.object_id
121
+ end
122
+
123
+ def string?
124
+ false
125
+ end
126
+
127
+ def tally
128
+ 1
129
+ end
130
+
131
+ def time?
132
+ false
133
+ end
134
+
135
+ def token?
136
+ false
137
+ end
138
+
139
+ def true?
140
+ false
141
+ end
142
+
143
+ def unless (&block)
144
+ nil
145
+ end
146
+
147
+ def use (&block)
148
+ yield value
149
+ value
150
+ end
151
+
152
+ def xor (object)
153
+ !object
154
+ end
155
+ end
@@ -0,0 +1,157 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QString < QObject
7
+ def QString.from_s (string)
8
+ string
9
+ end
10
+
11
+ def add (string)
12
+ value + string
13
+ end
14
+
15
+ def add_all (*every_string)
16
+ value + every_string.join('')
17
+ end
18
+
19
+ def at (number)
20
+ value.slice(number)
21
+ end
22
+
23
+ def between? (string_1, string_2)
24
+ value.between?(string_1, string_2)
25
+ end
26
+
27
+ def capitalize
28
+ value.capitalize
29
+ end
30
+
31
+ def capitalize!
32
+ value.capitalize!
33
+ end
34
+
35
+ def clear
36
+ value.clear
37
+ end
38
+
39
+ def downcase
40
+ value.downcase
41
+ end
42
+
43
+ def downcase!
44
+ value.downcase!
45
+ end
46
+
47
+ def each (&block)
48
+ value.each_char do |obj|
49
+ result = yield obj
50
+ break result if env::break?
51
+ end
52
+ end
53
+
54
+ def each_line (&block)
55
+ value.each_line do |obj|
56
+ result = yield obj
57
+ break result if env::break?
58
+ end
59
+ end
60
+
61
+ def empty?
62
+ value.empty?
63
+ end
64
+
65
+ def end_with? (string)
66
+ value.end_with? string
67
+ end
68
+
69
+ def include? (string)
70
+ value.include? string
71
+ end
72
+
73
+ def index (string)
74
+ value.index(string)
75
+ end
76
+
77
+ def length
78
+ value.length
79
+ end
80
+
81
+ def next
82
+ value.next
83
+ end
84
+
85
+ def next!
86
+ value.next!
87
+ end
88
+
89
+ def partition (string)
90
+ value.partition(string)
91
+ end
92
+
93
+ def push (string)
94
+ value << string
95
+ end
96
+
97
+ def push_all (*every_string)
98
+ value << every_string.join('')
99
+ end
100
+
101
+ def replace (string)
102
+ value.replace(string)
103
+ end
104
+
105
+ def reverse
106
+ value.reverse
107
+ end
108
+
109
+ def reverse!
110
+ value.reverse!
111
+ end
112
+
113
+ def split (string)
114
+ value.split(string)
115
+ end
116
+
117
+ def start_with? (string)
118
+ value.start_with? string
119
+ end
120
+
121
+ def string?
122
+ value
123
+ end
124
+
125
+ def stringify
126
+ value.dup
127
+ end
128
+
129
+ def strip
130
+ value.strip
131
+ end
132
+
133
+ def strip!
134
+ value.strip!
135
+ value
136
+ end
137
+
138
+ def swapcase
139
+ value.swapcase
140
+ end
141
+
142
+ def swapcase!
143
+ value.swapcase!
144
+ end
145
+
146
+ def tokenize
147
+ value.to_sym
148
+ end
149
+
150
+ def upcase
151
+ value.upcase
152
+ end
153
+
154
+ def upcase!
155
+ value.upcase!
156
+ end
157
+ end
@@ -0,0 +1,110 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QTime < QObject
7
+ def add (number)
8
+ value + number
9
+ end
10
+
11
+ def after? (time)
12
+ value > time
13
+ end
14
+
15
+ def before? (time)
16
+ value < time
17
+ end
18
+
19
+ def between? (time_1, time_2)
20
+ value.between?(*[time_1, time_2].sort)
21
+ end
22
+
23
+ def difference (time)
24
+ value - time
25
+ end
26
+
27
+ def friday?
28
+ value.friday?
29
+ end
30
+
31
+ def hour
32
+ value.hour
33
+ end
34
+
35
+ def minute
36
+ value.min
37
+ end
38
+
39
+ def monday?
40
+ value.monday?
41
+ end
42
+
43
+ def month
44
+ value.month
45
+ end
46
+
47
+ def next
48
+ value + 1
49
+ end
50
+
51
+ def round
52
+ value.round
53
+ end
54
+
55
+ def saturday?
56
+ value.saturday?
57
+ end
58
+
59
+ def second
60
+ value.sec
61
+ end
62
+
63
+ def split
64
+ value.to_a.first(6).reverse
65
+ end
66
+
67
+ def subtract (number)
68
+ value - number
69
+ end
70
+
71
+ def sunday?
72
+ value.sunday?
73
+ end
74
+
75
+ def thursday?
76
+ value.thursday?
77
+ end
78
+
79
+ def time?
80
+ value
81
+ end
82
+
83
+ def to_number
84
+ value.to_f
85
+ end
86
+
87
+ def tuesday?
88
+ value.tuesday?
89
+ end
90
+
91
+ def wednesday?
92
+ value.wednesday?
93
+ end
94
+
95
+ def weekday
96
+ value.wday
97
+ end
98
+
99
+ def year_day
100
+ value.yday
101
+ end
102
+
103
+ def year
104
+ value.year
105
+ end
106
+
107
+ def yesterday
108
+ value - 86400
109
+ end
110
+ end
@@ -0,0 +1,72 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QToken < QObject
7
+ def QToken.from_s (string)
8
+ string.to_sym
9
+ end
10
+
11
+ def at (number)
12
+ value[number]
13
+ end
14
+
15
+ def capitalize
16
+ value.capitalize
17
+ end
18
+
19
+ def downcase
20
+ value.downcase
21
+ end
22
+
23
+ def empty?
24
+ value.empty?
25
+ end
26
+
27
+ def get
28
+ env::get(value)
29
+ end
30
+
31
+ def iget
32
+ env::self.instance_variable_get(:"@#{value}")
33
+ rescue NameError
34
+ # Illegal name for instance variable
35
+ nil
36
+ end
37
+
38
+ def iset (object)
39
+ env::self.instance_variable_set(:"@#{value}", object)
40
+ rescue NameError
41
+ # Illegal name for instance variable
42
+ nil
43
+ end
44
+
45
+ def length
46
+ value.length
47
+ end
48
+
49
+ def next
50
+ value.next
51
+ end
52
+
53
+ def set (object)
54
+ env::set(value, object)
55
+ end
56
+
57
+ def stringify
58
+ value.to_s
59
+ end
60
+
61
+ def swapcase
62
+ value.swapcase
63
+ end
64
+
65
+ def token?
66
+ value
67
+ end
68
+
69
+ def upcase
70
+ value.upcase
71
+ end
72
+ end