hsss 0.1.15 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/exe/hsss +2 -0
  3. data/lib/hsss.rb +57 -23
  4. data/lib/hsss/version.rb +1 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 288a436bb0034705bb1b98fe83b3e5a15b151654
4
- data.tar.gz: be651a66e430447747ce5c3a8232275240029dde
3
+ metadata.gz: e93d5f3037e8065f5edc447e9b2e36134d52327b
4
+ data.tar.gz: 265f5c4624f809b0981fa07dbbe979c12ef55a17
5
5
  SHA512:
6
- metadata.gz: ded3bf0da43d8b97c91fd2b23b270420502a5c7e36d0fae65e0c5e1025a71cf5661ff49d4ebe5d72f5bf2b2a909e68a226d1706a32c0fe0505585464aed92fb8
7
- data.tar.gz: 34206d7fb5b451aa6eae3c7d38e9397fe87da3759a1d886a58148bc2daf1559c245d49fa5a1377487f17305760d3bb723a24424e6c8e928d6f9756829cb3857d
6
+ metadata.gz: 07ec0641c7713ab755c9ae1cd6d1f8cc0a6d65fa6be94a4ef0006dc33732b7e3dbca749d998b5202700310785f6f7406e763cbd320d3416e76bd1dcc22fd411f
7
+ data.tar.gz: e0f865e15b12e450466139141abe8dcb37bce535146310621680fffe561c46a94e1eba04538a6c575b9aea2e6a0a9935cffe8d88db118f75a315cbe22fe5a136
data/exe/hsss CHANGED
@@ -18,6 +18,8 @@ arg=OptionParser.new do |opts|
18
18
  opts.on("--no-each", "Omit the iterator macro"){opt[:skip_each]=true}
19
19
  opts.on("--no-parse", "Skip using luac to check script syntax"){opt[:no_luac]=true}
20
20
  opts.on("--no-static", "Don't make variables static (file-scoped)"){opt[:no_static]=true}
21
+ opts.on("--header-only", "just the header"){opt[:header_only]=true}
22
+ opts.on("--data-only", "just the data"){opt[:data_only]=true}
21
23
  opts.on("--prefix [#{Hsss::DEFAULT_PREFIX}]", "Prefix default names with this"){|v| opt[:prefix]=v}
22
24
  end
23
25
  arg.banner=<<EOS
@@ -39,7 +39,8 @@ module Hsss
39
39
  names.each do |var, default|
40
40
  send "#{var}=", opt[var]!=false ? opt[var] || cased_prefix(opt[:prefix], default) : false
41
41
  end
42
-
42
+ @header_only = opt[:header_only]
43
+ @data_only = opt[:data_only]
43
44
  @include_count = !opt[:skip_count]
44
45
  @include_iter_macro = !opt[:skip_each]
45
46
  @include_hash = !!hashes_struct
@@ -111,6 +112,7 @@ module Hsss
111
112
  class CSplit < COutput
112
113
 
113
114
  def initialize(files, opt={})
115
+ @static=opt[:no_static] ? "" : "static "
114
116
  super
115
117
  @head= <<-EOS.gsub(/^ {8}/, '')
116
118
  // don't edit this please, it was auto-generated by hsss
@@ -122,7 +124,7 @@ module Hsss
122
124
 
123
125
  EOS
124
126
  @struct_fmt= <<-EOS.gsub(/^ {8}/, '')
125
- #{opt[:no_static] ? "" : "static "}#{struct_name} %s = {
127
+ #{@static}#{struct_name} %s = {
126
128
  %s
127
129
  };
128
130
 
@@ -139,28 +141,41 @@ module Hsss
139
141
 
140
142
  def to_s
141
143
  out = ""
144
+ if @header_only
142
145
  out << sprintf(@head, @struct.join("\n"))
143
- if @scripts.count > 0
144
- out << sprintf(@struct_fmt, hashes_struct, @hashed_table.map{|v|" \"#{v}\""}.join(",\n")) if hashes_struct
145
- out << sprintf(@struct_fmt, names_struct, @name_table.map{|v|" \"#{v}\","}.join("\n")) if names_struct
146
- out << sprintf(@struct_fmt, scripts_struct, @script_table.join(",\n\n")) if scripts_struct
146
+ out << "#{@static}#{struct_name} #{hashes_struct};\n" if hashes_struct
147
+ out << "#{@static}#{struct_name} #{names_struct};\n" if names_struct
148
+ out << "#{@static}#{struct_name} #{scripts_struct};\n" if scripts_struct
149
+ out << "const int #{@count_name};\n" if @include_count
150
+ out << iter_macro
147
151
  else
148
- out << "//no scrpts\n"
152
+ out = ""
153
+ out << sprintf(@head, @struct.join("\n")) unless @data_only
154
+ if @scripts.count > 0
155
+ out << sprintf(@struct_fmt, hashes_struct, @hashed_table.map{|v|" \"#{v}\""}.join(",\n")) if hashes_struct
156
+ out << sprintf(@struct_fmt, names_struct, @name_table.map{|v|" \"#{v}\","}.join("\n")) if names_struct
157
+ out << sprintf(@struct_fmt, scripts_struct, @script_table.join(",\n\n")) if scripts_struct
158
+ else
159
+ out << "//no scrpts\n"
160
+ end
161
+ out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
162
+ out << iter_macro
149
163
  end
150
164
 
151
- out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
152
-
165
+ out
166
+ end
167
+
168
+ def iter_macro
153
169
  if @include_iter_macro
154
170
  macro = []
155
171
  macro << "#define #{iter_macro_name}(script_src, script_name, script_hash) \\"
156
172
  macro << "for((script_src)=(char **)&#{scripts_struct}, (script_hash)=(char **)&#{hashes_struct}, (script_name)=(char **)&#{names_struct}; (script_src) < (char **)(&#{scripts_struct} + 1); (script_src)++, (script_hash)++, (script_name)++) "
157
- out << macro.join("\n")
173
+ macro.join("\n")
174
+ else
175
+ ""
158
176
  end
159
-
160
- out
161
177
  end
162
178
 
163
-
164
179
  end
165
180
 
166
181
 
@@ -170,7 +185,7 @@ module Hsss
170
185
 
171
186
  def initialize(files, opt={})
172
187
  super
173
- @cout= <<-EOS.gsub(/^ {8}/, '')
188
+ @headf= <<-EOS.gsub(/^ {8}/, '')
174
189
  // don't edit this please, it was auto-generated by hsss
175
190
  // https://github.com/slact/hsss
176
191
 
@@ -182,8 +197,11 @@ module Hsss
182
197
  typedef struct {
183
198
  %s
184
199
  } #{struct_name};
200
+ EOS
201
+ @cout= <<-EOS.gsub(/^ {8}/, '')
202
+ #{@headf}
185
203
 
186
- #{opt[:no_static] ? "" : "static "}#{struct_name} #{scripts_struct} = {
204
+ #{@static}#{struct_name} #{scripts_struct} = {
187
205
  %s
188
206
  };
189
207
 
@@ -198,26 +216,42 @@ module Hsss
198
216
  cquote(script, " ")
199
217
  end
200
218
  def to_s
219
+ out = ""
220
+
201
221
  if @scripts.count > 0
202
222
  scrapts=[]
203
223
  for i in 0...@scripts.count do
204
224
  scrapts<< " {\"#{@name_table[i]}\", #{@include_hash ? "\"#{@hashed_table[i]}\"," : ""}\n#{@script_table[i]}}"
205
225
  end
206
- out=sprintf @cout, @struct.join("\n"), scrapts.join(",\n\n")
207
226
  else
208
- out="//nothing here\n"
227
+ scripties = nil
209
228
  end
210
-
211
- out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
212
-
229
+ if @header_only
230
+ out << sprintf(@headf, @struct.join("\n"))
231
+ out << "const int #{@count_name};\n" if @include_count
232
+ out << iter_macro
233
+ elsif @data_only
234
+ out << "#{@static}#{struct_name} #{scripts_struct} = {\n"
235
+ out << "#{scrapts.join(",\n\n")}\n"
236
+ out << "};\n"
237
+ out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
238
+ else
239
+ out << sprintf(@cout, (@struct || []).join("\n"), (scrapts || []).join(",\n\n"))
240
+ out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
241
+ out << iter_macro
242
+ end
243
+ out
244
+ end
245
+
246
+ def iter_macro
213
247
  if @include_iter_macro
214
248
  macro = []
215
249
  macro << "#define #{iter_macro_name}(script) \\"
216
250
  macro << "for((script)=(#{row_struct_name} *)&#{scripts_struct}; (script) < (#{row_struct_name} *)(&#{scripts_struct} + 1); (script)++) "
217
- out << macro.join("\n")
251
+ macro.join("\n")
252
+ else
253
+ ""
218
254
  end
219
-
220
- out
221
255
  end
222
256
 
223
257
  def failed?
@@ -1,3 +1,3 @@
1
1
  module Hsss
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.16"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hsss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leo P.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-19 00:00:00.000000000 Z
11
+ date: 2017-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler