hamlit 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28e31e01cf12674dcc7b8330ff324e2a02c98c5d
4
- data.tar.gz: 373c61913cd374e989b8c0a6f35ab36a59282920
3
+ metadata.gz: 7cfbb5fd9caa149d97cc4fb853a2dd612d3d8c0e
4
+ data.tar.gz: 76620cac7509f49595bcb854e5febe83fbe9ffc0
5
5
  SHA512:
6
- metadata.gz: 9330c82678ae6fd23fe70b15a3460f5a6df890fe0008d18f8f2396dd749c66defb62a32cfa46d57e0b5360172327c5c9793a66c186e47ea9cc9d00e6f62fdef8
7
- data.tar.gz: 381b81db56a1e1230e84080c1d5eb1b70ede41b46f976708a69f15a556a483a62b801976c2f80e71980c46a4a930d933c43de7d9a8a39ef97370d3ec94dfdf95
6
+ metadata.gz: 096b5901abbd8831d8c9823d8dff3057f9579e7642076f823d453b255960769de171e7f6a6065b2471382e85b7e96e7b2d2cbd9b9c7438b9dcdfae48f7de3486
7
+ data.tar.gz: 4cb6a4a7720bbdf9bf41e879e3331c9738912d8893910877e9a56f255051ea072523ec93642580cbb640ea4bf047c669f0e8b4f3eed63fd313ac79ed7e9a70d3
data/.gitignore CHANGED
@@ -8,7 +8,6 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  .sass-cache
11
- /hamlit1
12
11
  .ruby-version
13
12
  *.bundle
14
13
  *.so
@@ -4,8 +4,11 @@ All notable changes to this project will be documented in this file. This
4
4
  project adheres to [Semantic Versioning](http://semver.org/). This change log is based upon
5
5
  [keep-a-changelog](https://github.com/olivierlacan/keep-a-changelog).
6
6
 
7
- ## [HEAD]
8
- - No changes
7
+ ## [2.1.1] - 2015-12-15
8
+
9
+ ## Fixed
10
+
11
+ - Show proper line number for unblaced brackets error
9
12
 
10
13
  ## [2.1.0] - 2015-12-14
11
14
 
@@ -482,4 +485,4 @@ Added
482
485
  [2.0.0]: https://github.com/k0kubun/hamlit/compare/v1.7.2...v2.0.0
483
486
  [2.0.1]: https://github.com/k0kubun/hamlit/compare/v2.0.0...v2.0.1
484
487
  [2.0.2]: https://github.com/k0kubun/hamlit/compare/v2.0.1...v2.0.2
485
- [HEAD]: https://github.com/k0kubun/hamlit/compare/v2.0.1...HEAD
488
+ [2.1.0]: https://github.com/k0kubun/hamlit/compare/v2.0.2...v2.1.0
data/Rakefile CHANGED
@@ -82,7 +82,6 @@ task bench: :compile do
82
82
  else
83
83
  cmd = ['bin/bench', 'bench', ('-c' if ENV['COMPILE'] == '1'), *ENV['TEMPLATE'].split(',')].compact
84
84
  end
85
- system('bin/clone')
86
85
  exit system(*cmd)
87
86
  end
88
87
 
data/bin/bench CHANGED
@@ -5,7 +5,6 @@ require 'hamlit'
5
5
  require 'faml'
6
6
  require 'thor'
7
7
  require 'benchmark/ips'
8
- require 'hamlit1' if File.exist?('hamlit1')
9
8
  require_relative '../benchmark/utils/benchmark_ips_extension'
10
9
 
11
10
  class Bench < Thor
@@ -28,8 +27,7 @@ class Bench < Thor
28
27
  Benchmark.ips do |x|
29
28
  x.report("haml v#{Haml::VERSION}") { Haml::Engine.new(haml, escape_html: true, escape_attrs: true, ugly: true).precompiled }
30
29
  x.report("faml v#{Faml::VERSION}") { Faml::Engine.new.call(haml) }
31
- x.report("hamlit#{File.exist?('hamlit1') ? '2' : ''} v#{Hamlit::VERSION}") { Hamlit::Engine.new.call(haml) }
32
- x.report("hamlit1 v#{Hamlit1::VERSION}") { Hamlit1::Engine.new.call(haml) } if File.exist?('hamlit1')
30
+ x.report("hamlit v#{Hamlit::VERSION}") { Hamlit::Engine.new.call(haml) }
33
31
  x.compare!
34
32
  end
35
33
  end
@@ -48,13 +46,11 @@ class Bench < Thor
48
46
  Haml::Engine.new(haml, escape_html: true, escape_attrs: true, ugly: true).def_method(object, :haml)
49
47
  object.instance_eval "def faml; #{Faml::Engine.new.call(haml)}; end"
50
48
  object.instance_eval "def hamlit; #{Hamlit::Engine.new.call(haml)}; end"
51
- object.instance_eval "def hamlit1; #{Hamlit1::Engine.new.call(haml)}; end" if File.exist?('hamlit1')
52
49
 
53
50
  Benchmark.ips do |x|
54
51
  x.report("haml v#{Haml::VERSION}") { object.haml }
55
52
  x.report("faml v#{Faml::VERSION}") { object.faml }
56
- x.report("hamlit#{File.exist?('hamlit1') ? '2' : ''} v#{Hamlit::VERSION}") { object.hamlit }
57
- x.report("hamlit1 v#{Hamlit1::VERSION}") { object.hamlit1 } if File.exist?('hamlit1')
53
+ x.report("hamlit v#{Hamlit::VERSION}") { object.hamlit }
58
54
  x.compare!
59
55
  end
60
56
  end
@@ -68,10 +64,6 @@ class Bench < Thor
68
64
  puts Faml::Engine.new.call(haml)
69
65
  puts "\n#{?= * 49}\n Hamlit Source: #{file}\n#{?= * 49}"
70
66
  puts Hamlit::Engine.new.call(haml)
71
- if File.exist?('hamlit1')
72
- puts "\n#{?= * 49}\n Hamlit1 Source: #{file}\n#{?= * 49}"
73
- puts Hamlit1::Engine.new.call(haml)
74
- end
75
67
  end
76
68
 
77
69
  private
@@ -28,12 +28,12 @@ module Hamlit
28
28
  StringInterpolation.compile(node.value[:text]).each do |type, value|
29
29
  case type
30
30
  when :static
31
- value = Temple::Utils.escape_html(value) if node.value[:escape_html]
31
+ value = Hamlit::Utils.escape_html(value) if node.value[:escape_html]
32
32
  temple << [:static, value]
33
33
  when :dynamic
34
34
  if Hamlit::StaticAnalyzer.static?(value)
35
35
  value = eval(value).to_s
36
- value = Temple::Utils.escape_html(value) if node.value[:escape_html] || node.value[:escape_interpolation]
36
+ value = Hamlit::Utils.escape_html(value) if node.value[:escape_html] || node.value[:escape_interpolation]
37
37
  temple << [:static, value]
38
38
  else
39
39
  temple << [:escape, node.value[:escape_html] || node.value[:escape_interpolation], [:dynamic, value]]
@@ -46,7 +46,7 @@ module Hamlit
46
46
  def static_compile(node)
47
47
  str = eval("(#{node.value[:text]}).to_s")
48
48
  if node.value[:escape_html]
49
- str = Temple::Utils.escape_html(str)
49
+ str = Hamlit::Utils.escape_html(str)
50
50
  elsif node.value[:preserve]
51
51
  str = ::Hamlit::HamlHelpers.find_and_preserve(str, %w(textarea pre code))
52
52
  end
@@ -45,12 +45,12 @@ module Hamlit
45
45
  StringInterpolation.compile(node.value[:value]).each do |type, value|
46
46
  case type
47
47
  when :static
48
- value = Temple::Utils.escape_html(value) if node.value[:escape_html]
48
+ value = Hamlit::Utils.escape_html(value) if node.value[:escape_html]
49
49
  temple << [:static, value]
50
50
  when :dynamic
51
51
  if Hamlit::StaticAnalyzer.static?(value)
52
52
  value = eval(value).to_s
53
- value = Temple::Utils.escape_html(value) if node.value[:escape_html] || node.value[:escape_interpolation]
53
+ value = Hamlit::Utils.escape_html(value) if node.value[:escape_html] || node.value[:escape_interpolation]
54
54
  temple << [:static, value]
55
55
  else
56
56
  temple << [:escape, node.value[:escape_html] || node.value[:escape_interpolation], [:dynamic, value]]
@@ -27,7 +27,19 @@ module Hamlit
27
27
  def call(template)
28
28
  HamlParser.new(template, HamlOptions.new(@options)).parse
29
29
  rescue ::Hamlit::HamlError => e
30
- e
30
+ error_with_lineno(e)
31
+ end
32
+
33
+ private
34
+
35
+ def error_with_lineno(error)
36
+ return error if error.line
37
+
38
+ trace = error.backtrace.first
39
+ return error unless trace
40
+
41
+ line = trace.match(/\d+\z/).to_s.to_i
42
+ HamlSyntaxError.new(error.message, line)
31
43
  end
32
44
  end
33
45
  end
@@ -1,3 +1,3 @@
1
1
  module Hamlit
2
- VERSION = '2.1.0'
2
+ VERSION = '2.1.1'
3
3
  end
metadata CHANGED
@@ -1,251 +1,251 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hamlit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Kokubun
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-13 00:00:00.000000000 Z
11
+ date: 2015-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: temple
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.7.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.7.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: tilt
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: coffee-script
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: erubis
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: faml
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: less
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: minitest-reporters
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ~>
130
130
  - !ruby/object:Gem::Version
131
131
  version: '1.1'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ~>
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.1'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rails
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: 4.0.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: 4.0.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ~>
158
158
  - !ruby/object:Gem::Version
159
159
  version: '10.0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ~>
165
165
  - !ruby/object:Gem::Version
166
166
  version: '10.0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rake-compiler
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - '>='
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: redcarpet
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ">="
185
+ - - '>='
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ">="
192
+ - - '>='
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: sass
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ">="
199
+ - - '>='
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ">="
206
+ - - '>='
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: slim
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - ">="
213
+ - - '>='
214
214
  - !ruby/object:Gem::Version
215
215
  version: '0'
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
- - - ">="
220
+ - - '>='
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: therubyracer
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
- - - ">="
227
+ - - '>='
228
228
  - !ruby/object:Gem::Version
229
229
  version: '0'
230
230
  type: :development
231
231
  prerelease: false
232
232
  version_requirements: !ruby/object:Gem::Requirement
233
233
  requirements:
234
- - - ">="
234
+ - - '>='
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0'
237
237
  - !ruby/object:Gem::Dependency
238
238
  name: unindent
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
- - - ">="
241
+ - - '>='
242
242
  - !ruby/object:Gem::Version
243
243
  version: '0'
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
- - - ">="
248
+ - - '>='
249
249
  - !ruby/object:Gem::Version
250
250
  version: '0'
251
251
  description: High Performance Haml Implementation
@@ -257,9 +257,9 @@ extensions:
257
257
  - ext/hamlit/extconf.rb
258
258
  extra_rdoc_files: []
259
259
  files:
260
- - ".gitignore"
261
- - ".gitmodules"
262
- - ".travis.yml"
260
+ - .gitignore
261
+ - .gitmodules
262
+ - .travis.yml
263
263
  - CHANGELOG.md
264
264
  - Gemfile
265
265
  - LICENSE.txt
@@ -295,7 +295,6 @@ files:
295
295
  - benchmark/slim/view.slim
296
296
  - benchmark/utils/benchmark_ips_extension.rb
297
297
  - bin/bench
298
- - bin/clone
299
298
  - bin/console
300
299
  - bin/lineprof
301
300
  - bin/ruby
@@ -305,26 +304,6 @@ files:
305
304
  - exe/hamlit
306
305
  - ext/hamlit/extconf.rb
307
306
  - ext/hamlit/hamlit.c
308
- - ext/hamlit/houdini/.gitignore
309
- - ext/hamlit/houdini/COPYING
310
- - ext/hamlit/houdini/Makefile
311
- - ext/hamlit/houdini/README.md
312
- - ext/hamlit/houdini/buffer.c
313
- - ext/hamlit/houdini/buffer.h
314
- - ext/hamlit/houdini/houdini.h
315
- - ext/hamlit/houdini/houdini_href_e.c
316
- - ext/hamlit/houdini/houdini_html_e.c
317
- - ext/hamlit/houdini/houdini_html_u.c
318
- - ext/hamlit/houdini/houdini_js_e.c
319
- - ext/hamlit/houdini/houdini_js_u.c
320
- - ext/hamlit/houdini/houdini_uri_e.c
321
- - ext/hamlit/houdini/houdini_uri_u.c
322
- - ext/hamlit/houdini/houdini_xml_e.c
323
- - ext/hamlit/houdini/html_unescape.gperf
324
- - ext/hamlit/houdini/html_unescape.h
325
- - ext/hamlit/houdini/tools/build_table.py
326
- - ext/hamlit/houdini/tools/build_tables.c
327
- - ext/hamlit/houdini/tools/wikipedia_table.txt
328
307
  - hamlit.gemspec
329
308
  - lib/hamlit.rb
330
309
  - lib/hamlit/attribute_builder.rb
@@ -380,6 +359,26 @@ files:
380
359
  - lib/hamlit/template.rb
381
360
  - lib/hamlit/utils.rb
382
361
  - lib/hamlit/version.rb
362
+ - ext/hamlit/houdini/.gitignore
363
+ - ext/hamlit/houdini/COPYING
364
+ - ext/hamlit/houdini/Makefile
365
+ - ext/hamlit/houdini/README.md
366
+ - ext/hamlit/houdini/buffer.c
367
+ - ext/hamlit/houdini/buffer.h
368
+ - ext/hamlit/houdini/houdini.h
369
+ - ext/hamlit/houdini/houdini_href_e.c
370
+ - ext/hamlit/houdini/houdini_html_e.c
371
+ - ext/hamlit/houdini/houdini_html_u.c
372
+ - ext/hamlit/houdini/houdini_js_e.c
373
+ - ext/hamlit/houdini/houdini_js_u.c
374
+ - ext/hamlit/houdini/houdini_uri_e.c
375
+ - ext/hamlit/houdini/houdini_uri_u.c
376
+ - ext/hamlit/houdini/houdini_xml_e.c
377
+ - ext/hamlit/houdini/html_unescape.gperf
378
+ - ext/hamlit/houdini/html_unescape.h
379
+ - ext/hamlit/houdini/tools/build_table.py
380
+ - ext/hamlit/houdini/tools/build_tables.c
381
+ - ext/hamlit/houdini/tools/wikipedia_table.txt
383
382
  homepage: https://github.com/k0kubun/hamlit
384
383
  licenses:
385
384
  - MIT
@@ -390,17 +389,17 @@ require_paths:
390
389
  - lib
391
390
  required_ruby_version: !ruby/object:Gem::Requirement
392
391
  requirements:
393
- - - ">="
392
+ - - '>='
394
393
  - !ruby/object:Gem::Version
395
394
  version: '0'
396
395
  required_rubygems_version: !ruby/object:Gem::Requirement
397
396
  requirements:
398
- - - ">="
397
+ - - '>='
399
398
  - !ruby/object:Gem::Version
400
399
  version: '0'
401
400
  requirements: []
402
401
  rubyforge_project:
403
- rubygems_version: 2.4.5.1
402
+ rubygems_version: 2.0.14.1
404
403
  signing_key:
405
404
  specification_version: 4
406
405
  summary: High Performance Haml Implementation
data/bin/clone DELETED
@@ -1,14 +0,0 @@
1
- #!/bin/bash
2
-
3
- if [ -e hamlit1 ]; then
4
- echo 'With hamlit1'
5
- exit 0
6
- fi
7
-
8
- git clone --depth=1 -b v1.7.2 https://github.com/k0kubun/hamlit hamlit1
9
- cd hamlit1
10
- git grep --name-only Hamlit | xargs sed -i "" -e "s/Hamlit/Hamlit1/g" 2> /dev/null
11
- git grep --name-only hamlit | xargs sed -i "" -e "s/hamlit/hamlit1/g" 2> /dev/null
12
- git mv hamlit.gemspec hamlit1.gemspec
13
- git mv lib/hamlit.rb lib/hamlit1.rb
14
- git mv lib/hamlit lib/hamlit1