pakman 0.7.0 → 1.0.0

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: 8627dadb6e570d024eada852f7661770864c3238
4
- data.tar.gz: 2c8f9252f3bceb14c559d06d7851d23fb11dfe45
3
+ metadata.gz: 22a5cf70dcedaa0eb95834a086d24a7386597853
4
+ data.tar.gz: 63c75a8c9c8ccb237bd4c1722cb90b62fe5a0816
5
5
  SHA512:
6
- metadata.gz: 1d1f9cdab69b5084546f7d52cbb1471a5159e84d591105b9b83198697eca19e415da4943de9a6b69d4804cd7e8b0973116f33c4a3f2e2b77e2d9c3c27131bfb4
7
- data.tar.gz: 674ef0df51ad6fe5ffea55cd194ad12fdcaa286d5a432ec16b1d80f1c03d4c255decd15b84ef517ff80bb9db9ce35b9116e746ee6fb2ffe47f470f1818533700
6
+ metadata.gz: 659145fbe1d193a0259751e8e1521ebd9845fef0f358a2a9118f574bfe59b13a6d447088e79503efc83e8e9b5c225d85090d541c9aa99ca3850271aee5e88e34
7
+ data.tar.gz: 30238ac4aad11d19dbb1d11f339eae6c323101ab6d48f1e2435da15138907949db3b110d8184fb1902b28ade6afac7dd4cf939e78067efd07c7be5563b9a500b
data/Rakefile CHANGED
@@ -2,31 +2,31 @@ require 'hoe'
2
2
  require './lib/pakman/version.rb'
3
3
 
4
4
  Hoe.spec 'pakman' do
5
-
5
+
6
6
  self.version = Pakman::VERSION
7
-
7
+
8
8
  self.summary = 'pakman - Template Pack Manager (incl. Embedded Ruby, Liquid, etc.)'
9
9
  self.description = summary
10
-
10
+
11
11
  self.urls = ['https://github.com/rubylibs/pakman']
12
12
 
13
13
  self.author = 'Gerald Bauer'
14
14
  self.email = 'wwwmake@googlegroups.com'
15
-
15
+
16
16
  self.extra_deps = [
17
17
  ['fetcher', '>= 0.4.5'],
18
18
  ['logutils', '>= 0.6.1'],
19
- ['liquid', '>= 3.0.6'],
19
+ ['liquid', '>= 4.0.0'],
20
20
  ]
21
21
 
22
22
  # switch extension to .rdoc for gihub formatting
23
23
  # self.readme_file = 'README.md'
24
24
  # self.history_file = 'History.md'
25
-
25
+
26
26
  self.licenses = ['Public Domain']
27
27
 
28
28
  self.spec_extras = {
29
- required_ruby_version: '>= 1.9.2'
29
+ required_ruby_version: '>= 2.3'
30
30
  }
31
31
 
32
32
  end
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  ###
4
- # NB: for local testing run like:
4
+ # Note: for local testing run like:
5
5
  #
6
6
  # 1.9.x: ruby -Ilib lib/pakman.rb
7
7
 
@@ -66,4 +66,4 @@ module Pakman
66
66
  end # module Pakman
67
67
 
68
68
 
69
- Pakman.main if __FILE__ == $0
69
+ Pakman.main if __FILE__ == $0
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Fetch
@@ -13,12 +15,12 @@ class Fetch
13
15
  def run
14
16
  logger.debug "fetch_uri: >#{opts.fetch_uri}<"
15
17
  src = opts.fetch_uri
16
-
18
+
17
19
  uri = URI.parse( src )
18
20
  logger.debug "scheme: >#{uri.scheme}<, host: >#{uri.host}<, port: >#{uri.port}<, path: >#{uri.path}<"
19
-
21
+
20
22
  pakname = Pakman.pakname_from_file( uri.path )
21
- logger.debug "pakname: >#{pakname}<"
23
+ logger.debug "pakname: >#{pakname}<"
22
24
 
23
25
  pakpath = File.expand_path( pakname, opts.config_path )
24
26
  logger.debug "pakpath: >#{pakpath}<"
@@ -27,4 +29,4 @@ class Fetch
27
29
  end # method run
28
30
 
29
31
  end # class Fetch
30
- end # module Pakman
32
+ end # module Pakman
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Gen
@@ -15,20 +17,20 @@ class Gen
15
17
  def run( args )
16
18
  manifest_name = opts.manifest
17
19
  manifest_name = manifest_name.downcase.gsub('.txt', '' ) # remove .txt if present
18
-
20
+
19
21
  logger.debug "manifest=#{manifest_name}"
20
22
 
21
23
  # check for matching manifests
22
24
  manifests = installed_template_manifests.select { |m| m[0] == manifest_name+'.txt' }
23
-
25
+
24
26
  if manifests.empty?
25
27
  puts "*** error: unknown template pack '#{manifest_name}'; use pakman -l to list installed template packs"
26
28
  exit 2
27
29
  end
28
-
30
+
29
31
  manifestsrc = manifests[0][1]
30
32
  pakpath = opts.output_path
31
-
33
+
32
34
  if args.empty?
33
35
  Copier.new.copy_pak( manifestsrc, pakpath )
34
36
  else
@@ -40,8 +42,8 @@ class Gen
40
42
  Templater.new.merge_pak( manifestsrc, pakpath, Ctx.new(data).ctx, name )
41
43
  end
42
44
  end
43
-
45
+
44
46
  end
45
47
 
46
48
  end # class Gen
47
- end # module Pakman
49
+ end # module Pakman
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class List
@@ -14,16 +16,16 @@ class List
14
16
 
15
17
  def run
16
18
  manifests = installed_template_manifests
17
-
19
+
18
20
  puts 'Installed template packs in search path'
19
-
21
+
20
22
  installed_template_manifest_patterns.each_with_index do |pattern,i|
21
23
  puts " [#{i+1}] #{pattern}"
22
24
  end
23
25
  puts ' include:'
24
-
26
+
25
27
  if manifests.empty?
26
- puts " -- none --"
28
+ puts " -- none --"
27
29
  else
28
30
  manifests.each do |manifest|
29
31
  puts "%16s (%s)" % [manifest[0].gsub('.txt',''), manifest[1]]
@@ -32,4 +34,4 @@ class List
32
34
  end
33
35
 
34
36
  end # class List
35
- end # module Pakman
37
+ end # module Pakman
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Ctx # Context
@@ -32,4 +34,4 @@ class Ctx # Context
32
34
  end
33
35
 
34
36
  end # class Ctx
35
- end # module Pakman
37
+ end # module Pakman
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  module ManifestHelper
@@ -18,7 +20,7 @@ module ManifestHelper
18
20
  "*.txt",
19
21
  "*/*.txt"
20
22
  ]
21
-
23
+
22
24
  patterns = []
23
25
  patterns += current_patterns
24
26
  patterns += config_patterns
@@ -29,10 +31,10 @@ module ManifestHelper
29
31
  excludes = [
30
32
  "Manifest.txt",
31
33
  "*/Manifest.txt"
32
- ]
34
+ ]
33
35
 
34
36
  Finder.new.find_manifests( installed_template_manifest_patterns, excludes )
35
37
  end
36
38
 
37
39
  end # module ManifestHelper
38
- end # module Pakman
40
+ end # module Pakman
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Opts
@@ -5,7 +7,7 @@ class Opts
5
7
  def list=(value)
6
8
  @list = value
7
9
  end
8
-
10
+
9
11
  def list?
10
12
  return false if @list.nil? # default list flag is false
11
13
  @list == true
@@ -29,7 +31,7 @@ class Opts
29
31
  def fetch_uri
30
32
  @fetch_uri || '-fetch uri required-'
31
33
  end
32
-
34
+
33
35
  def fetch?
34
36
  @fetch_uri.nil? ? false : true
35
37
  end
@@ -38,7 +40,7 @@ class Opts
38
40
  def manifest=(value)
39
41
  @manifest = value
40
42
  end
41
-
43
+
42
44
  ## fix:/todo: use a different default manifest
43
45
  def manifest
44
46
  @manifest || 's6.txt'
@@ -48,7 +50,7 @@ class Opts
48
50
  def config_path=(value)
49
51
  @config_path = value
50
52
  end
51
-
53
+
52
54
  def config_path
53
55
  @config_path || '~/.pak'
54
56
  end
@@ -57,10 +59,10 @@ class Opts
57
59
  def output_path=(value)
58
60
  @output_path = value
59
61
  end
60
-
62
+
61
63
  def output_path
62
64
  @output_path || '.'
63
65
  end
64
66
 
65
67
  end # class Opts
66
- end # module Pakman
68
+ end # module Pakman
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Runner
@@ -12,7 +14,7 @@ class Runner
12
14
 
13
15
  def run( args )
14
16
  opt=OptionParser.new do |cmd|
15
-
17
+
16
18
  cmd.banner = "Usage: pakman [options]"
17
19
 
18
20
  cmd.on( '-f', '--fetch URI', 'Fetch Templates' ) do |uri|
@@ -23,13 +25,13 @@ class Runner
23
25
  opts.generate = true
24
26
  opts.manifest = manifest
25
27
  end
26
-
28
+
27
29
  cmd.on( '-l', '--list', "List Installed Templates" ) { opts.list = true }
28
30
 
29
31
  cmd.on( '-c', '--config PATH', "Configuration Path (default is #{opts.config_path})" ) do |path|
30
32
  opts.config_path = path
31
33
  end
32
-
34
+
33
35
  cmd.on( '-o', '--output PATH', "Output Path (default is #{opts.output_path})" ) { |path| opts.output_path = path }
34
36
 
35
37
  cmd.on( '-v', '--version', "Show version" ) do
@@ -65,7 +67,7 @@ Examples:
65
67
 
66
68
  Further information:
67
69
  http://geraldb.github.com/pakman
68
-
70
+
69
71
  EOS
70
72
  exit
71
73
  end
@@ -88,4 +90,4 @@ EOS
88
90
  end # method run
89
91
 
90
92
  end # class Runner
91
- end # module Pakman
93
+ end # module Pakman
@@ -1,19 +1,11 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Copier
4
6
 
5
7
  include LogUtils::Logging
6
8
 
7
- ### todo/fix:
8
- # remove logger from c'tor
9
- # use logutils instead
10
-
11
- def initialize( old_logger_do_not_use=nil )
12
- if old_logger_do_not_use != nil
13
- puts "*** depreciated API call [Pakman::Copier.initialize] - do NOT pass in logger; no longer required/needed; logger arg will get removed"
14
- end
15
- end
16
-
17
9
 
18
10
  def copy_pak( manifestsrc, pakpath )
19
11
 
@@ -37,13 +29,13 @@ class Copier
37
29
 
38
30
  logger.debug "destfull=>#{destfull}<"
39
31
  logger.debug "destpath=>#{destpath}<"
40
-
32
+
41
33
  puts " Copying to #{dest} from #{source}..."
42
34
  FileUtils.copy( source, destfull )
43
35
  end
44
-
36
+
45
37
  puts "Done (in #{Time.now-start} s)."
46
38
  end # method copy_pak
47
39
 
48
40
  end # class Copier
49
- end # module Pakman
41
+ end # module Pakman
@@ -6,10 +6,10 @@ class ErbTemplate
6
6
 
7
7
  def self.from_file( path )
8
8
  puts " Loading template (from file) >#{path}<..."
9
- text = File.read( path ) ## use/todo: use read utf8 - why? why not??
9
+ text = File.open( path, 'r:bom|utf-8' ).read ## note: assume utf8
10
10
  self.new( text, path: path ) ## note: pass along path as an option
11
11
  end
12
-
12
+
13
13
  def self.from_string( text ) ### use parse as alias - why?? why not??
14
14
  self.new( text )
15
15
  end
@@ -10,21 +10,11 @@ class Templater
10
10
 
11
11
  include LogUtils::Logging
12
12
 
13
- ### todo/fix:
14
- # remove logger from c'tor
15
- # use logutils instead
16
-
17
- def initialize( old_logger_do_not_use=nil )
18
- if old_logger_do_not_use != nil
19
- puts "*** depreciated API call [Pakman::Templater.initialize] - do NOT pass in logger; no longer required/needed; logger arg will get removed"
20
- end
21
- end
22
-
23
13
 
24
14
  def merge_pak( manifestsrc, pakpath, binding, name )
25
-
15
+
26
16
  start = Time.now
27
-
17
+
28
18
  pakname = Pakman.pakname_from_file( manifestsrc )
29
19
 
30
20
  puts "Merging template pack '#{pakname}'"
@@ -35,11 +25,11 @@ class Templater
35
25
  manifest.each do |entry|
36
26
  dest = entry[0]
37
27
  source = entry[1]
38
-
28
+
39
29
  if dest =~ /__file__/ # replace w/ name
40
30
  dest = dest.gsub( '__file__', name )
41
31
  end
42
-
32
+
43
33
  # get full (absolute) path and make sure path exists
44
34
  destfull = File.expand_path( dest, pakpath )
45
35
  destpath = File.dirname( destfull )
@@ -47,21 +37,21 @@ class Templater
47
37
 
48
38
  logger.debug "destfull=>#{destfull}<"
49
39
  logger.debug "destpath=>#{destpath}<"
50
-
40
+
51
41
  if source =~ /\.erb\.|.erb$/
52
42
  puts " Merging to #{dest}..."
53
43
 
54
- out = File.new( destfull, 'w+' )
44
+ out = File.new( destfull, 'w+:utf-8' ) ## note: use utf8 (by default)
55
45
  out << ErbTemplate.from_file( source ).render( binding )
56
46
  out.flush
57
47
  out.close
58
48
  else
59
49
  puts " Copying to #{dest} from #{source}..."
60
-
50
+
61
51
  FileUtils.copy( source, destfull )
62
52
  end
63
53
  end # each entry in manifest
64
-
54
+
65
55
  puts "Done (in #{Time.now-start} s)."
66
56
  end # method merge_pak
67
57
 
@@ -1,27 +1,20 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Fetcher
4
6
 
5
7
  include LogUtils::Logging
6
8
 
7
- ### todo/fix:
8
- # remove logger from c'tor
9
- # use logutils instead
10
-
11
- def initialize( old_logger_do_not_use=nil )
12
- if old_logger_do_not_use != nil
13
- puts "*** depreciated API call [Pakman::Fetcher.initialize] - do NOT pass in logger; no longer required/needed; logger arg will get removed"
14
- end
15
- end
16
9
 
17
10
  def fetch_pak( manifestsrc, pakpath )
18
11
 
19
12
  start = Time.now
20
13
 
21
14
  uri = URI.parse( manifestsrc )
22
-
15
+
23
16
  logger.debug "scheme: #{uri.scheme}, host: #{uri.host}, port: #{uri.port}, path: #{uri.path}"
24
-
17
+
25
18
  dirname = File.dirname( uri.path )
26
19
  filename = File.basename( uri.path ) # e.g. fullerscreen.txt (with extension)
27
20
 
@@ -40,7 +33,7 @@ class Fetcher
40
33
  puts "Fetching template pack '#{pakname}'"
41
34
  puts " from '#{dlbase}'"
42
35
  puts " saving to '#{pakpath}'"
43
-
36
+
44
37
  # step 1: download manifest
45
38
  manifestdest = "#{pakpath}/#{filename}"
46
39
 
@@ -50,7 +43,7 @@ class Fetcher
50
43
 
51
44
  ## todo: change back to load_file_core after deprecated api got removed
52
45
  manifest = Manifest.load_file_core_v2( manifestdest )
53
-
46
+
54
47
  # step 2: download files & templates listed in manifest
55
48
  manifest.each do |entry|
56
49
  source = entry[1]
@@ -64,7 +57,7 @@ class Fetcher
64
57
  logger.debug "destpath=>#{destpath}<"
65
58
 
66
59
  sourcefull = "#{dlbase}/#{source}"
67
-
60
+
68
61
  if source =~ /\.erb\.|.erb$/
69
62
  puts " Downloading template '#{source}'..."
70
63
  else
@@ -72,7 +65,7 @@ class Fetcher
72
65
  end
73
66
 
74
67
  fetch_file( sourcefull, destfull )
75
- end
68
+ end
76
69
  puts "Done (in #{Time.now-start} s)."
77
70
  end # method fetch_pak
78
71
 
@@ -81,9 +74,9 @@ private
81
74
  def fetch_file( src, dest )
82
75
  ## note: code moved to its own gem, that is, fetcher
83
76
  ## see https://github.com/geraldb/fetcher
84
-
77
+
85
78
  ::Fetcher::Worker.new.copy( src, dest )
86
79
  end
87
80
 
88
81
  end # class Fetcher
89
- end # module Pakman
82
+ end # module Pakman
@@ -1,22 +1,15 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
  class Finder
4
6
 
5
7
  include LogUtils::Logging
6
8
 
7
- ### todo/fix:
8
- # remove logger from c'tor
9
- # use logutils instead
10
-
11
- def initialize( old_logger_do_not_use=nil )
12
- if old_logger_do_not_use != nil
13
- puts "*** depreciated API call [Pakman::Finder.initialize] - do NOT pass in logger; no longer required/needed; logger arg will get removed"
14
- end
15
- end
16
9
 
17
10
  def find_manifests( patterns, excludes=[] )
18
11
  manifests = []
19
-
12
+
20
13
  patterns.each do |pattern|
21
14
  pattern.gsub!( '\\', '/') # normalize path; make sure all path use / only
22
15
  logger.debug "Checking >#{pattern}<"
@@ -27,20 +20,20 @@ class Finder
27
20
  else
28
21
  unless exclude?( file, excludes ) # check for excludes; skip if excluded
29
22
  logger.debug " Adding match >#{file}<"
30
-
23
+
31
24
  ## todo/fix:
32
25
  # array first entry - downcase and gsub('.txt','') ??
33
26
  # use Pakman.pakname_from_file()
34
-
27
+
35
28
  manifests << [ File.basename( file ), file ]
36
29
  end
37
30
  end
38
31
  end
39
32
  end
40
-
33
+
41
34
  manifests
42
35
  end
43
-
36
+
44
37
  private
45
38
  def exclude?( file, excludes )
46
39
  excludes.each do |pattern|
@@ -54,4 +47,4 @@ private
54
47
  end
55
48
 
56
49
  end # class Finder
57
- end # module Pakman
50
+ end # module Pakman
@@ -7,10 +7,10 @@ class LiquidTemplate
7
7
 
8
8
  def self.from_file( path )
9
9
  puts " Loading template (from file) >#{path}<..."
10
- text = File.read( path ) ## use/todo: use read utf8 - why? why not??
10
+ text = File.open( path, 'r:bom|utf-8' ).read ## note: assume utf8
11
11
  self.new( text, path: path ) ## note: pass along path as an option
12
12
  end
13
-
13
+
14
14
  def self.from_string( text ) ### use parse as alias - why?? why not??
15
15
  self.new( text )
16
16
  end
@@ -22,13 +22,22 @@ class LiquidTemplate
22
22
  def render( hash )
23
23
  ## note: hash keys MUST be strings (not symbols) e.g. 'name' => 'Toby'
24
24
  ## pp hash
25
- @template.render( hash )
25
+ res = @template.render( hash, { strict_variables: true, strict_filters: true } )
26
+
27
+ ###
28
+ ## issue warnings/errors if present
29
+ errors = @template.errors
30
+ if errors.size > 0
31
+ puts "!! WARN - #{errors.size} liquid error(s) when rendering template:"
32
+ pp errors
33
+ end
34
+
35
+ res
26
36
  end
27
37
 
28
38
  end # class LiquidTemplate
29
39
 
30
40
 
31
-
32
41
  #########################
33
42
  ## convenience helper for pages (with headers/front matter)
34
43
 
@@ -39,7 +48,7 @@ class LiquidPageTemplate
39
48
  page = Page.from_file( path ) ## use/todo: use read utf8 - why? why not??
40
49
  self.new( page.contents, path: path ) ## note: pass along path as an option
41
50
  end
42
-
51
+
43
52
  def self.from_string( text ) ### use parse as alias - why?? why not??
44
53
  ## todo: (auto)-add headers as page.title etc. -- why? why not??
45
54
  page = Page.from_string( text )
@@ -49,7 +58,7 @@ class LiquidPageTemplate
49
58
  def initialize( text, opts={} )
50
59
  @template = LiquidTemplate.new( text, opts )
51
60
  end
52
-
61
+
53
62
  def render( hash )
54
63
  @template.render( hash )
55
64
  end
@@ -58,4 +67,3 @@ end ## class LiquidPageTemplate
58
67
 
59
68
 
60
69
  end # module Pakman
61
-
@@ -23,9 +23,6 @@ class LiquidTemplater
23
23
  REGEX_EXT = Regexp.new( "\\.(#{EXTS.join('|')})$", Regexp::IGNORECASE )
24
24
 
25
25
 
26
- def initialize
27
- end
28
-
29
26
  ## rename binding/hash to assigns or something more specific - why? why not?
30
27
  def merge_pak( manifestsrc, pakpath, binding, name )
31
28
 
@@ -77,7 +74,7 @@ class LiquidTemplater
77
74
  if source_page && source_page.headers?
78
75
  puts " Bingo! Front matter (e.g. ---) found. Merging template to #{dest}..."
79
76
 
80
- out = File.new( destfull, 'w+' )
77
+ out = File.new( destfull, 'w+:utf-8' ) ## note: use utf8
81
78
  ## note: only pass along contents (not headers e.g. front matter for now)
82
79
  ## (auto-)add front matter headers as page.[xxx] - why? why not??
83
80
  out << LiquidTemplate.from_string( source_page.contents ).render( binding )
@@ -6,19 +6,11 @@ class Manifest
6
6
 
7
7
  include LogUtils::Logging
8
8
 
9
- ### todo/fix:
10
- # remove logger from c'tor
11
- # use logutils instead
12
-
13
- def initialize( old_logger_do_not_use=nil )
14
- if old_logger_do_not_use != nil
15
- puts "*** depreciated API call [Pakman::Manifest.initialize] - do NOT pass in logger; no longer required/needed; logger arg will get removed"
16
- end
17
9
 
10
+ def initialize()
18
11
  @manifest = []
19
12
  end
20
13
 
21
-
22
14
  def self.load_file_core( old_logger_do_not_use, path )
23
15
  puts "*** depreciated API call [Pakman::Manifest.load_file_core] - do NOT pass in logger; no longer required/needed; logger arg will get removed"
24
16
 
@@ -59,8 +51,8 @@ class Manifest
59
51
 
60
52
  def load_file_core_worker( path )
61
53
  @manifest = []
62
-
63
- File.open( path ).readlines.each_with_index do |line,i|
54
+
55
+ File.open( path, 'r:bom|utf-8' ).readlines.each_with_index do |line,i|
64
56
  case line
65
57
  when /^\s*$/
66
58
  # skip empty lines
@@ -69,10 +61,10 @@ class Manifest
69
61
  else
70
62
  logger.debug "line #{i+1}: #{line.strip}"
71
63
  values = line.strip.split( /[ <,+]+/ )
72
-
64
+
73
65
  # add source for shortcuts (assumes relative path; if not issue warning/error)
74
66
  values << values[0] if values.size == 1
75
-
67
+
76
68
  @manifest << values
77
69
  end
78
70
  end
@@ -80,10 +72,10 @@ class Manifest
80
72
 
81
73
  def load_file_worker( path )
82
74
  filename = path
83
-
84
- puts " Loading template manifest #{filename}..."
75
+
76
+ puts " Loading template manifest #{filename}..."
85
77
  load_file_core_worker( filename )
86
-
78
+
87
79
  # post-processing
88
80
  # normalize all source paths (1..-1) /make full path/add template dir
89
81
 
@@ -10,10 +10,10 @@ class Page
10
10
 
11
11
  def self.from_file( path )
12
12
  puts " Loading page (from file) >#{path}<..."
13
- text = File.read( path ) ## use/todo: use read utf8 - why? why not??
13
+ text = File.open( path, 'r:bom|utf-8' ).read ## note: assume utf8
14
14
  self.new( text, path: path ) ## note: pass along path as an option
15
15
  end
16
-
16
+
17
17
  def self.from_string( text ) ### use parse as alias - why?? why not??
18
18
  self.new( text )
19
19
  end
@@ -48,9 +48,8 @@ class Page
48
48
  else
49
49
  @contents = text
50
50
  @headers = nil
51
- end
51
+ end
52
52
  end
53
53
 
54
54
  end # class Page
55
55
  end # module Pakman
56
-
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Pakman
2
4
 
3
5
 
@@ -10,4 +12,4 @@ module Pakman
10
12
  File.basename( path ).downcase.gsub( '.txt', '' )
11
13
  end
12
14
 
13
- end # class Pakman
15
+ end # class Pakman
@@ -1,4 +1,5 @@
1
+ # encoding: utf-8
1
2
 
2
3
  module Pakman
3
- VERSION = '0.7.0'
4
+ VERSION = '1.0.0'
4
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pakman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-06 00:00:00.000000000 Z
11
+ date: 2017-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fetcher
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.6
47
+ version: 4.0.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
- version: 3.0.6
54
+ version: 4.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rdoc
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.14'
75
+ version: '3.16'
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
- version: '3.14'
82
+ version: '3.16'
83
83
  description: pakman - Template Pack Manager (incl. Embedded Ruby, Liquid, etc.)
84
84
  email: wwwmake@googlegroups.com
85
85
  executables:
@@ -149,7 +149,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 1.9.2
152
+ version: '2.3'
153
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  requirements:
155
155
  - - ">="
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  version: '0'
158
158
  requirements: []
159
159
  rubyforge_project:
160
- rubygems_version: 2.2.3
160
+ rubygems_version: 2.5.2
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: pakman - Template Pack Manager (incl. Embedded Ruby, Liquid, etc.)