hsss 0.1.7 → 0.1.8

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 (6) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -3
  3. data/exe/hsss +5 -2
  4. data/lib/hsss.rb +13 -15
  5. data/lib/hsss/version.rb +1 -1
  6. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cab7c750dbb0557910fd637a4a29df79cb40db04
4
- data.tar.gz: 5286db254bacd9b9288795d52a1c842992ac7b59
3
+ metadata.gz: 30090ea6931a2c431bd7c0df476eb4b761d84b8a
4
+ data.tar.gz: 6e666a9c89b623aa5ecbc6ea1219357a03013e8e
5
5
  SHA512:
6
- metadata.gz: 24693aa14136f137c4d20f6472ce88200c288d677260ea25aead6eff9055449ea42de5de0ae4334bce38d90027169275947e0837ce59c8ee659c30bc5f8ef32d
7
- data.tar.gz: c2700387cb67d163119f1d081a38ebd2ee8969f550665bed4e012f73e5b19b9a939f7fffbf396350fbfc6912416b8ce900e5b655900381887ae7f74b85bef233
6
+ metadata.gz: 818b34ffb2ff332eaa50b75da63108f51b92f98c8579c48064e58a482182eb0ef0fa891d3488842c20743fb09e0905aca5b25ea3d8e0ea224308a79495cfb3ca
7
+ data.tar.gz: 44db3e7e91073b2af12e94c6e56d8f2375690e9c6acc75c1f63e930445d3b610dd0ae38e190ff7cfeaf26b257c6802702be496ba02537cf5d5530575f48bd677
data/README.md CHANGED
@@ -4,7 +4,7 @@ Hash-Safe Script Splinterer, a Lua Script and hash embedder into C source.
4
4
  Good for putting Redis Lua scripts in your C headers.
5
5
  ```
6
6
  Usage: hsss [options] files
7
- --format [whole|split] Output as separate or a single struct
7
+ --format [split|whole] Output as separate or a single struct
8
8
  --struct [redis_lua_scripts_t]
9
9
  C struct name
10
10
  --row-struct [redis_lua_script_t]
@@ -12,8 +12,10 @@ Usage: hsss [options] files
12
12
  --scripts [redis_lua_scripts]
13
13
  Scripts variable (split or whole format)
14
14
  --hashes [redis_lua_hashes] Hashes variable (split format)
15
+ --no-hashes Omit hashes variable (split format)
15
16
  --names [redis_lua_script_names]
16
17
  Script names variable (split format)
18
+ --no-names Omit script names variable (split format)
17
19
  --count [redis_lua_scripts_count]
18
20
  integer script count variable
19
21
  --no-count Omit script count variable
@@ -21,6 +23,7 @@ Usage: hsss [options] files
21
23
  Iterator macro
22
24
  --no-each Omit the iterator macro
23
25
  --no-parse Skip using luac to check script syntax
26
+ --no-static Don't make variables static (file-scoped)
24
27
  --prefix PREFIX Prefix default names with this
25
28
  ```
26
29
 
@@ -43,7 +46,7 @@ redis.call('del', KEYS[1])
43
46
  ```
44
47
 
45
48
 
46
- running `hsss example/*.lua` ("whole" format produces
49
+ running `hsss example/*.lua` ("whole" format) produces
47
50
  ```c
48
51
  // don't edit this please, it was auto-generated by hsss
49
52
  // https://github.com/slact/hsss
@@ -78,7 +81,7 @@ const int redis_lua_scripts_count=2;
78
81
  for((script)=(redis_lua_script_t *)&redis_lua_scripts; (script) < (redis_lua_script_t *)(&redis_lua_scripts + 1); (script)++)
79
82
  ```
80
83
 
81
- running `hsss --format split example/*.lua` outputs
84
+ running `hsss --format split example/*.lua` produces
82
85
  ```c
83
86
  // don't edit this please, it was auto-generated by hsss
84
87
  // https://github.com/slact/hsss
data/exe/hsss CHANGED
@@ -9,12 +9,15 @@ arg=OptionParser.new do |opts|
9
9
  opts.on("--row-struct [#{Hsss::DEFAULT_ROW_STRUCT_NAME}]", "Hash+name+script struct for 'whole' format."){|v| opt[:row_struct_name]= v}
10
10
  opts.on("--scripts [#{Hsss::DEFAULT_SCRIPTS_NAME}]", "Scripts variable (split or whole format)"){|v| opt[:scripts_struct]=v}
11
11
  opts.on("--hashes [#{Hsss::DEFAULT_HASHES_NAME}]", "Hashes variable (split format)"){|v| opt[:hashes_struct]=v}
12
+ opts.on("--no-hashes", "Omit hashes variable (split format)"){opt[:hashes_struct]=false}
12
13
  opts.on("--names [#{Hsss::DEFAULT_NAMES_NAME}]", "Script names variable (split format)"){|v| opt[:names_struct]=v}
14
+ opts.on("--no-names", "Omit script names variable (split format)"){opt[:names_struct]=false}
13
15
  opts.on("--count [#{Hsss::DEFAULT_COUNT_NAME}]", "integer script count variable"){|v| opt[:count_name]=v}
14
16
  opts.on("--no-count", "Omit script count variable"){opt[:skip_count]=true}
15
17
  opts.on("--each-macro [#{Hsss::DEFAULT_ITER_MACRO_NAME}]", "Iterator macro"){|v| opt[:iter_macro_name]=v}
16
18
  opts.on("--no-each", "Omit the iterator macro"){opt[:skip_each]=true}
17
19
  opts.on("--no-parse", "Skip using luac to check script syntax"){opt[:no_luac]=true}
20
+ opts.on("--no-static", "Don't make variables static (file-scoped)"){opt[:no_static]=true}
18
21
  opts.on("--prefix PREFIX", "Prefix default names with this"){|v| opt[:prefix]=v}
19
22
  end
20
23
  arg.banner=<<EOS
@@ -27,9 +30,9 @@ arg.version=Hsss::VERSION
27
30
  rest = arg.parse!
28
31
 
29
32
  case opt[:format]
30
- when nil, "split"
33
+ when "split"
31
34
  hsss = Hsss::CSplit.new(rest, opt)
32
- when "whole"
35
+ when "whole", nil
33
36
  hsss = Hsss::CWhole.new(rest, opt)
34
37
  else
35
38
  STDERR.puts "Invalid format #{opt[:format]}."
data/lib/hsss.rb CHANGED
@@ -23,12 +23,12 @@ module Hsss
23
23
  scripts_struct: DEFAULT_SCRIPTS_NAME,
24
24
  count_name: DEFAULT_COUNT_NAME,
25
25
  iter_macro_name: DEFAULT_ITER_MACRO_NAME}.each do |var, default|
26
- send "#{var}=", opt[var] || default
26
+ send "#{var}=", opt[var]!=false ? opt[var] || default : false
27
27
  end
28
28
 
29
29
  if opt[:prefix]
30
30
  [:struct_name, :hashes_struct, :names_struct, :scripts_struct].each do |var|
31
- send "#{var}=", "#{opt[:prefix]}#{send var}"
31
+ send "#{var}=", "#{opt[:prefix]}#{send var}" if send(var)
32
32
  end
33
33
  end
34
34
  @include_count = !opt[:skip_count]
@@ -98,7 +98,7 @@ module Hsss
98
98
 
99
99
  def initialize(files, opt={})
100
100
  super
101
- @cout= <<-EOS.gsub(/^ {8}/, '')
101
+ @head= <<-EOS.gsub(/^ {8}/, '')
102
102
  // don't edit this please, it was auto-generated by hsss
103
103
  // https://github.com/slact/hsss
104
104
 
@@ -106,15 +106,9 @@ module Hsss
106
106
  %s
107
107
  } #{struct_name};
108
108
 
109
- static #{struct_name} #{hashes_struct} = {
110
- %s
111
- };
112
-
113
- static #{struct_name} #{names_struct} = {
114
- %s
115
- };
116
-
117
- static #{struct_name} #{scripts_struct} = {
109
+ EOS
110
+ @struct_fmt= <<-EOS.gsub(/^ {8}/, '')
111
+ #{opt[:no_static] ? "" : "static "}#{struct_name} %s = {
118
112
  %s
119
113
  };
120
114
 
@@ -130,10 +124,14 @@ module Hsss
130
124
  end
131
125
 
132
126
  def to_s
127
+ out = ""
128
+ out << sprintf(@head, @struct.join("\n"))
133
129
  if @scripts.count > 0
134
- out=sprintf @cout, @struct.join("\n"), @hashed_table.map{|v|" \"#{v}\""}.join(",\n"), @name_table.map{|v|" \"#{v}\","}.join("\n"), @script_table.join(",\n\n")
130
+ out << sprintf(@struct_fmt, hashes_struct, @hashed_table.map{|v|" \"#{v}\""}.join(",\n")) if hashes_struct
131
+ out << sprintf(@struct_fmt, names_struct, @name_table.map{|v|" \"#{v}\","}.join("\n")) if names_struct
132
+ out << sprintf(@struct_fmt, scripts_struct, @script_table.join(",\n\n")) if scripts_struct
135
133
  else
136
- out="//nothing here\n"
134
+ out << "//no scrpts\n"
137
135
  end
138
136
 
139
137
  out << "const int #{@count_name}=#{@scripts.count};\n" if @include_count
@@ -172,7 +170,7 @@ module Hsss
172
170
  %s
173
171
  } #{struct_name};
174
172
 
175
- static #{struct_name} #{scripts_struct} = {
173
+ #{opt[:no_static] ? "" : "static "}#{struct_name} #{scripts_struct} = {
176
174
  %s
177
175
  };
178
176
 
data/lib/hsss/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Hsss
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
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.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leo P.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-22 00:00:00.000000000 Z
11
+ date: 2016-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler