liquidoc 0.10.0 → 0.12.0.pre.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/liquidoc.rb +211 -94
  3. data/lib/liquidoc/version.rb +1 -1
  4. metadata +20 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f251c6530c83d406052a8adc81a10048a65be63f7041bb3a8d9e6031514f69a
4
- data.tar.gz: 104ba3413ecc11bbee5afd5064ac818287a2a27164fb6943c65dbb41625359c3
3
+ metadata.gz: 6fb2c899ee28ead304240eb43845e3e2fe178d9853ef79c726a0ba6ce95c9214
4
+ data.tar.gz: b7f1363b8a9734d16ce2f874562e2abb2233cc1afe5844285060676471fd624b
5
5
  SHA512:
6
- metadata.gz: '09bacdea17f0eaa5e2f26db3705031801c05b3730d9ea82b37294351d1acc1a01110621ea301099d7f5b170e334c2aa3be5bace5d2e85f14c2819ffd12bdd5b2'
7
- data.tar.gz: 33da833e1f3b747e87747edf4a731a04aea4bcc4da6ca48a5af8c6d7f4a25049c9ebaf5cbf89f51476e1c107e63ea08b2b5d60fa27fa956b48fa48ab3f14815f
6
+ metadata.gz: 2b93027fd037a3fec80d16848a55ac34bde034418584d436740d64ce696cc1732ce63e80914d3bf181b774020b346292f4bc50d40b747ac41a30a006d4c810d9
7
+ data.tar.gz: b9ff1ced8dc5cb9e269baad24dbfa6fe810a3876e77e4d89aa7c2fbc40561cdd894d7b9a374f21ad0727509f0c3268774952975dfe522e6f8b185497c6eca256
@@ -40,6 +40,7 @@ require 'highline'
40
40
  @configs_dir = @base_dir + '_configs'
41
41
  @templates_dir = @base_dir + '_templates/'
42
42
  @data_dir = @base_dir + '_data/'
43
+ @data_files = nil
43
44
  @attributes_file_def = '_data/asciidoctor.yml'
44
45
  @attributes_file = @attributes_file_def
45
46
  @pdf_theme_file = 'theme/pdf-theme.yml'
@@ -56,6 +57,7 @@ require 'highline'
56
57
  @search_index = false
57
58
  @search_index_dry = ''
58
59
  @safemode = true
60
+ @render_count = 0
59
61
 
60
62
  # Instantiate the main Logger object, which is always running
61
63
  @logger = Logger.new(STDOUT)
@@ -66,6 +68,7 @@ end
66
68
 
67
69
 
68
70
  FileUtils::mkdir_p("#{@build_dir}") unless File.exists?("#{@build_dir}")
71
+ FileUtils::rm_rf("#{@build_dir}/pre")
69
72
  FileUtils::mkdir_p("#{@build_dir}/pre") unless File.exists?("#{@build_dir}/pre")
70
73
 
71
74
 
@@ -74,15 +77,21 @@ FileUtils::mkdir_p("#{@build_dir}/pre") unless File.exists?("#{@build_dir}/pre")
74
77
  # ===
75
78
 
76
79
  # Establish source, template, index, etc details for build jobs from a config file
77
- def config_build config_file, config_vars={}, parse=false
80
+ def config_build config_file, config_vars={}, data_files=nil, parse=false
78
81
  @logger.debug "Using config file #{config_file}."
79
82
  validate_file_input(config_file, "config")
80
- if config_vars.length > 0 or parse or contains_liquid(config_file)
83
+ if config_vars.length > 0 or data_files or parse or contains_liquid(config_file)
81
84
  @logger.debug "Config_vars: #{config_vars.length}"
82
85
  # If config variables are passed on the CLI, we want to parse the config file
83
86
  # and use the parsed version for the rest fo this routine
84
87
  config_out = "#{@build_dir}/pre/#{File.basename(config_file)}"
85
- liquify(nil,config_file, config_out, config_vars)
88
+ data_obj = DataObj.new()
89
+ if data_files
90
+ payload = get_payload(data_files)
91
+ data_obj.add_payload!(payload)
92
+ end
93
+ data_obj.add_data!(config_vars, "vars")
94
+ liquify(data_obj, config_file, config_out)
86
95
  config_file = config_out
87
96
  @logger.debug "Config parsed! Using #{config_out} for build."
88
97
  validate_file_input(config_file, "config")
@@ -124,18 +133,28 @@ def iterate_build cfg
124
133
  type = step.type
125
134
  case type # a switch to evaluate the 'action' parameter for each step in the iteration...
126
135
  when "parse"
136
+ builds = step.builds
137
+ data_obj = DataObj.new()
127
138
  if step.data
128
- data = DataSrc.new(step.data)
139
+ data_files = DataFiles.new(step.data)
140
+ payload = get_payload(data_files)
141
+ data_obj.add_payload!(payload)
129
142
  end
130
- builds = step.builds
131
143
  builds.each do |bld|
132
- build = Build.new(bld, type) # create an instance of the Build class; Build.new accepts a 'bld' hash & action 'type'
144
+ build = Build.new(bld, type, data_obj) # create an instance of the Build class; Build.new accepts a 'bld' hash & action 'type'
133
145
  if build.template
146
+ # Prep & perform a Liquid-parsed build
134
147
  @explainer.info build.message
135
- build.add_vars!(@passed_vars) unless @passed_vars.empty?
136
- liquify(data, build.template, build.output, build.variables) # perform the liquify operation
137
- else
138
- regurgidata(data, build.output)
148
+ build.add_data!(build.variables, "vars") if build.variables
149
+ liquify(build.data, build.template, build.output) # perform the liquify operation
150
+ else # Prep & perform a direct conversion
151
+ # Delete nested data and vars objects
152
+ build.data.remove_scope("data")
153
+ build.data.remove_scope("vars")
154
+ # Add vars from CLI or config args
155
+ build.data.add_data!(build.variables) unless build.variables.empty?
156
+ build.data.add_data!(@passed_vars) unless @passed_vars.empty?
157
+ regurgidata(build.data, build.output)
139
158
  end
140
159
  end
141
160
  when "migrate"
@@ -151,7 +170,7 @@ def iterate_build cfg
151
170
  builds = step.builds
152
171
  for bld in builds
153
172
  doc = AsciiDocument.new(step.source)
154
- attrs = ingest_attributes(step.data) if step.data # Set attributes from from YAML files
173
+ attrs = ingest_attributes(step.data) if step.data # Set attributes from YAML files
155
174
  doc.add_attrs!(attrs) # Set attributes from the action-level data file
156
175
  build = Build.new(bld, type) # create an instance of the Build class; Build.new accepts a 'bld' hash & action 'type' string
157
176
  build.set("backend", derive_backend(doc.type, build.output) ) unless build.backend
@@ -170,6 +189,10 @@ def iterate_build cfg
170
189
  end
171
190
  end
172
191
 
192
+ # ===
193
+ # Helper procs
194
+ # ===
195
+
173
196
  # Verify files exist
174
197
  def validate_file_input file, type
175
198
  @logger.debug "Validating input file for #{type} file #{file}"
@@ -401,11 +424,12 @@ end #class Action
401
424
 
402
425
  class Build
403
426
 
404
- def initialize build, type
427
+ def initialize build, type, data=DataObj.new
405
428
  build['attributes'] = Hash.new unless build['attributes']
406
429
  build['props'] = build['properties'] if build['properties']
407
430
  @build = build
408
431
  @type = type
432
+ @data = data
409
433
  @build['variables'] = {} unless @build['variables']
410
434
  end
411
435
 
@@ -434,14 +458,23 @@ class Build
434
458
  end
435
459
 
436
460
  def variables
461
+ # Variables added in the config build:variables: param
462
+ # Not for manipulation
437
463
  @build['variables']
438
464
  end
439
465
 
440
- def add_vars! vars
441
- vars.to_h unless vars.is_a? Hash
442
- self.variables.merge!vars
466
+ def data
467
+ @data unless @data.nil?
443
468
  end
444
469
 
470
+ def add_data! data, scope=""
471
+ @data.add_data!(data, scope)
472
+ end
473
+
474
+ # def vars
475
+ # self.data['vars']
476
+ # end
477
+
445
478
  def message
446
479
  # dynamically build a message, possibly appending a reason
447
480
  unless @build['message']
@@ -504,10 +537,6 @@ class Build
504
537
  end
505
538
  end
506
539
 
507
- # def prop_files_list # force the array back to a list of files (for CLI)
508
- # props['files'].force_array if props['files']
509
- # end
510
-
511
540
  def search
512
541
  props['search']
513
542
  end
@@ -561,7 +590,7 @@ class Build
561
590
  when "render"
562
591
  reqs = ["output"]
563
592
  end
564
- for req in required
593
+ for req in reqs
565
594
  if (defined?(req)).nil?
566
595
  raise "ActionSettingMissing"
567
596
  end
@@ -571,32 +600,30 @@ class Build
571
600
  end # class Build
572
601
 
573
602
  class DataSrc
603
+ # Organizes metadata about an ingestible data source
574
604
  # initialization means establishing a proper hash for the 'data' param
575
- def initialize datasrc
605
+ def initialize sources
576
606
  @datasrc = {}
577
- @datasrc['file'] = datasrc
607
+ @datasrc['file'] = sources
578
608
  @datasrc['ext'] = ''
579
- @datasrc['type'] = false
580
- @datasrc['pattern'] = false
581
- if datasrc.is_a? Hash # data var is a hash, so add 'ext' to it by extracting it from filename
582
- @datasrc['file'] = datasrc['file']
583
- @datasrc['ext'] = File.extname(datasrc['file'])
584
- if (defined?(datasrc['pattern']))
585
- @datasrc['pattern'] = datasrc['pattern']
609
+ @datasrc['pattern'] = nil
610
+ if sources.is_a? Hash # data var is a hash, so add 'ext' to it by extracting it from filename
611
+ @datasrc['file'] = sources['file']
612
+ @datasrc['ext'] = File.extname(sources['file'])
613
+ if (defined?(sources['pattern']))
614
+ @datasrc['pattern'] = sources['pattern']
586
615
  end
587
- if (defined?(datasrc['type']))
588
- @datasrc['type'] = datasrc['type']
616
+ if (defined?(sources['type']))
617
+ @datasrc['type'] = sources['type']
589
618
  end
590
- else
591
- if datasrc.is_a? String
592
- @datasrc['ext'] = File.extname(datasrc)
593
- else
594
- if datasrc.is_a? Array
595
-
596
- else
597
- raise "InvalidDataSource"
598
- end
619
+ elsif sources.is_a? String
620
+ @datasrc['ext'] = File.extname(sources)
621
+ elsif sources.is_a? Array
622
+ sources.each do |src|
623
+ @datasrc['name'] = File.basename(@datasrc['file'])
599
624
  end
625
+ else
626
+ raise "InvalidDataSource"
600
627
  end
601
628
  end
602
629
 
@@ -608,6 +635,10 @@ class DataSrc
608
635
  @datasrc['ext']
609
636
  end
610
637
 
638
+ def name
639
+ File.basename(self.file,File.extname(self.file))
640
+ end
641
+
611
642
  def type
612
643
  if @datasrc['type'] # if we're carrying a 'type' setting for data, pass it along
613
644
  datatype = @datasrc['type']
@@ -619,7 +650,7 @@ class DataSrc
619
650
  # @logger.error "Data file extension must be one of: .yml, .json, .xml, or .csv or else declared in config file."
620
651
  raise "FileExtensionUnknown"
621
652
  end
622
- datatype = @datasrc['ext']
653
+ datatype = self.ext
623
654
  datatype = datatype[1..-1] # removes leading dot char
624
655
  end
625
656
  unless datatype.downcase.match(/yml|json|xml|csv|regex/) # 'type' must be one of these permitted vals
@@ -632,6 +663,84 @@ class DataSrc
632
663
  def pattern
633
664
  @datasrc['pattern']
634
665
  end
666
+ end # class DataSrc
667
+
668
+ # DataFiles
669
+ class DataFiles
670
+ # Accepts a single String, Hash, or Array
671
+ # String must be a path/filename
672
+ # Hash must contain file: and optionally type: and pattern:
673
+ # Array must contain path/filenames as strings
674
+ # Returns array of DataSrc objects
675
+ def initialize data_sources
676
+ @data_sources = []
677
+ if data_sources.is_a? Array
678
+ data_sources.each do |src|
679
+ @data_sources << DataSrc.new(src)
680
+ end
681
+ else # data_sources is String or Hash
682
+ @data_sources[0] = DataSrc.new(data_sources)
683
+ end
684
+ @src_class = data_sources.class
685
+ end
686
+
687
+ def sources
688
+ # An Array of DataSrc objects
689
+ @data_sources
690
+ end
691
+
692
+ def type
693
+ # returns the original class of the object used to init this obj
694
+ @src_class
695
+ end
696
+
697
+ end
698
+
699
+ class DataObj
700
+ # DataObj
701
+ #
702
+ # Scoped variables for feeding a Liquid parsing operation
703
+ def initialize
704
+ @data = {"vars" => {}}
705
+ end
706
+
707
+ def add_data! data, scope=""
708
+ # Merges data into existing scope or creates a new scope
709
+ if scope.empty? # store new object at root of this object
710
+ self.data.merge!data
711
+ else # store new object as a subordinate, named object
712
+ if self.data.key?(scope) # merge/append into existing object
713
+ self.data[scope].merge!data if self.data[scope].is_a? Hash
714
+ self.data[scope] << data if self.data[scope].is_a? Array
715
+ else # create a new key named after the scope
716
+ scoped_hash = { scope => data }
717
+ self.data.merge!scoped_hash
718
+ end
719
+ end
720
+ end
721
+
722
+ def add_payload! payload
723
+ # Expects an Array of Hashes ([{name=>String, data=>Object},...])
724
+ if payload.size == 1
725
+ # If payload is a single Hash, store it at the root level (no scope)
726
+ self.add_data!(payload[0]['data']) if payload[0]['data'].is_a? Hash
727
+ # Insert arrays into the data. scope, and for backward compatibility, hashes as well
728
+ self.add_data!(payload[0]['data'], "data")
729
+ end
730
+ # For ALL payloads, create a self-named obj scope
731
+ payload.each do |obj|
732
+ self.add_data!(obj['data'], obj['name']) # Insert object under self-named scope
733
+ end
734
+ end
735
+
736
+ def data
737
+ @data
738
+ end
739
+
740
+ def remove_scope scope
741
+ self.data.delete(scope)
742
+ end
743
+
635
744
  end
636
745
 
637
746
  class AsciiDocument
@@ -660,31 +769,33 @@ class AsciiDocument
660
769
  end
661
770
  end
662
771
 
663
- class AsciiDoctorConfig
664
- def initialize out, type, back
665
-
666
- end
667
- end
668
-
669
772
  # ===
670
773
  # Action-specific procs
671
774
  # ===
672
775
  # PARSE-type build procs
673
776
  # ===
674
777
 
675
- # Get data
676
- def get_data datasrc
677
- @logger.debug "Executing liquify parsing operation."
678
- if datasrc.is_a? String
679
- datasrc = DataSrc.new(datasrc)
778
+ def get_payload data_files
779
+ # data_files: a proper DataFile object
780
+ payload = []
781
+ data_files.sources.each do |src|
782
+ obj = {}
783
+ begin
784
+ data = ingest_data(src) # Extract data from file
785
+ rescue Exception => ex
786
+ @logger.error "#{ex.class}: #{ex.message}"
787
+ raise "DataFileReadFail (#{src.file})"
788
+ end
789
+ obj['name'] = src.name
790
+ obj['data'] = data
791
+ payload << obj
680
792
  end
681
- validate_file_input(datasrc.file, "data")
682
- return ingest_data(datasrc)
793
+ return payload
683
794
  end
684
795
 
685
- # Pull in a semi-structured data file, converting contents to a Ruby hash
796
+ # Pull in a semi-structured data file, converting contents to a Ruby object
686
797
  def ingest_data datasrc
687
- raise "InvalidDataObject" unless datasrc.is_a? Object
798
+ raise "InvalidDataSrcObject" unless datasrc.is_a? DataSrc
688
799
  case datasrc.type
689
800
  when "yml"
690
801
  begin
@@ -724,9 +835,6 @@ def ingest_data datasrc
724
835
  raise "MissingRegexPattern"
725
836
  end
726
837
  end
727
- if data.is_a? Array
728
- data = {"data" => data}
729
- end
730
838
  return data
731
839
  end
732
840
 
@@ -757,29 +865,12 @@ def parse_regex data_file, pattern
757
865
  end
758
866
 
759
867
  # Parse given data using given template, generating given output
760
- def liquify datasrc, template_file, output, variables=nil
761
- if datasrc
762
- input = get_data(datasrc)
763
- nested = { "data" => get_data(datasrc)}
764
- input.merge!nested
765
- end
766
- if variables
767
- if input
768
- input.merge!variables
769
- else
770
- input = variables
771
- end
772
- end
773
- @logger.error "Parse operations need at least a data file or variables." unless input
868
+ def liquify data_obj, template_file, output
774
869
  validate_file_input(template_file, "template")
775
- if variables
776
- vars = { "vars" => variables }
777
- input.merge!vars
778
- end
779
870
  begin
780
871
  template = File.read(template_file) # reads the template file
781
872
  template = Liquid::Template.parse(template) # compiles template
782
- rendered = template.render(input) # renders the output
873
+ rendered = template.render(data_obj.data) # renders the output
783
874
  rescue Exception => ex
784
875
  message = "Problem rendering Liquid template. #{template_file}\n" \
785
876
  "#{ex.class} thrown. #{ex.message}"
@@ -794,14 +885,32 @@ def liquify datasrc, template_file, output, variables=nil
794
885
  end
795
886
  end
796
887
 
797
- def regurgidata datasrc, output
798
- data = get_data(datasrc)
888
+ def cli_liquify data_files=nil, template_file=nil, output_file=nil, passed_vars
889
+ # converts command-line options into liquify or regurgidata inputs
890
+ data_obj = DataObj.new()
891
+ if data_files
892
+ payload = get_payload(data_files)
893
+ data_obj.add_payload!(payload)
894
+ end
895
+ if template_file
896
+ # data_obj.add_data!(ingested, "data") if df
897
+ data_obj.add_data!(passed_vars, "vars") if passed_vars
898
+ liquify(data_obj, template_file, output_file)
899
+ else
900
+ data_obj.remove_scope("vars")
901
+ data_obj.add_data!(passed_vars) if passed_vars
902
+ regurgidata(data_obj, output_file)
903
+ end
904
+ end
905
+
906
+ def regurgidata data_obj, output
907
+ # converts data files from one format directly to another
799
908
  raise "UnrecognizedFileExtension" unless File.extname(output).match(/\.yml|\.json|\.xml|\.csv/)
800
909
  case File.extname(output)
801
910
  when ".yml"
802
- new_data = data.to_yaml
911
+ new_data = data_obj.data.to_yaml
803
912
  when ".json"
804
- new_data = data.to_json
913
+ new_data = data_obj.data.to_json
805
914
  when ".xml"
806
915
  @logger.warn "XML output not yet implemented."
807
916
  when ".csv"
@@ -809,9 +918,11 @@ def regurgidata datasrc, output
809
918
  end
810
919
  if new_data
811
920
  begin
812
- File.open(output, 'w') { |file| file.write(new_data) }
921
+ generate_file(new_data, output)
922
+ # File.open(output, 'w') { |file| file.write(new_data) }
813
923
  @logger.info "Data converted and saved to #{output}."
814
- rescue
924
+ rescue Exception => ex
925
+ @logger.error "#{ex.class}: #{ex.message}"
815
926
  raise "FileWriteError"
816
927
  end
817
928
  end
@@ -879,7 +990,7 @@ def ingest_attributes attr_file
879
990
  begin
880
991
  new_attrs = new_attrs[block_name]
881
992
  rescue
882
- raise "InvalidAttributesBlock"
993
+ raise "InvalidAttributesBlock (#{filename}:#{block_name})"
883
994
  end
884
995
  end
885
996
  rescue Exception => ex
@@ -910,6 +1021,8 @@ def derive_backend type, out_file
910
1021
  end
911
1022
 
912
1023
  def render_doc doc, build
1024
+ @render_count += 1
1025
+ @logger.info "### Build ##{@render_count}"
913
1026
  case build.backend
914
1027
  when "html5", "pdf"
915
1028
  asciidocify(doc, build)
@@ -953,6 +1066,7 @@ def asciidocify doc, build
953
1066
  # Perform the aciidoctor convert
954
1067
  if build.backend == "pdf"
955
1068
  @logger.info "Generating PDF. This can take some time..."
1069
+ attrs.merge!({"pdf-theme"=>build.style}) if build.style
956
1070
  end
957
1071
  Asciidoctor.convert_file(
958
1072
  doc.index,
@@ -964,7 +1078,7 @@ def asciidocify doc, build
964
1078
  safe: "unsafe",
965
1079
  sourcemap: true,
966
1080
  verbose: @verbose,
967
- mkdirs: true
1081
+ mkdirs: true,
968
1082
  )
969
1083
  @logger.info "Rendered file #{to_file}."
970
1084
  end
@@ -980,18 +1094,19 @@ def generate_site doc, build
980
1094
  attrs.merge!(build.attributes) if build.attributes
981
1095
  attrs = {"asciidoctor" => {"attributes" => attrs} }
982
1096
  attrs_yaml = attrs.to_yaml # Convert it all back to Yaml, as we're going to write a file to feed back to Jekyll
983
- File.open("#{@build_dir}/pre/_attributes.yml", 'w') { |file| file.write(attrs_yaml) }
984
- build.add_config_file("#{@build_dir}/pre/_attributes.yml")
1097
+ File.open("#{@build_dir}/pre/attributes_#{@render_count}.yml", 'w') { |file| file.write(attrs_yaml) }
1098
+ build.add_config_file("#{@build_dir}/pre/attributes_#{@render_count}.yml")
985
1099
  config_list = build.prop_files_array.join(',') # flatten the Array back down for the CLI
986
1100
  quiet = "--quiet" if @quiet || @explicit
987
1101
  if build.props['arguments']
988
- opts_args_file = "#{@build_dir}/pre/jekyll_opts_args.yml"
1102
+ opts_args_file = "#{@build_dir}/pre/jekyll_opts_args_#{@render_count}.yml"
989
1103
  opts_args = build.props['arguments']
990
1104
  File.open(opts_args_file, 'w') { |file|
991
1105
  file.write(opts_args.to_yaml)}
992
1106
  config_list << ",#{opts_args_file}"
993
1107
  end
994
1108
  base_args = "--config #{config_list}"
1109
+ base_args += " --trace" if @verbose
995
1110
  command = "bundle exec jekyll build #{base_args} #{quiet}"
996
1111
  if @search_index
997
1112
  # TODO enable config-based admin api key ingest once config is dynamic
@@ -1214,8 +1329,10 @@ command_parser = OptionParser.new do|opts|
1214
1329
  @config_file = @base_dir + n
1215
1330
  end
1216
1331
 
1217
- opts.on("-d PATH", "--data=PATH", "Semi-structured data source (input) path. Ex. path/to/data.yml. Required unless --config is called." ) do |n|
1218
- @data_file = @base_dir + n
1332
+ opts.on("-d PATH[,PATH]", "--data=PATH[,PATH]", "Semi-structured data source (input) path or paths. Ex. path/to/data.yml or data/file1.yml,data/file2.json. Required unless --config is called; optional with config." ) do |n|
1333
+ data_files = n.split(',')
1334
+ data_files = data_files.map! {|file| @base_dir + file}
1335
+ @data_files = DataFiles.new(data_files)
1219
1336
  end
1220
1337
 
1221
1338
  opts.on("-f PATH", "--from=PATH", "Directory to copy assets from." ) do |n|
@@ -1307,13 +1424,13 @@ explainer_init
1307
1424
 
1308
1425
  unless @config_file
1309
1426
  @logger.debug "Executing config-free build based on API/CLI arguments alone."
1310
- if @data_file
1311
- liquify(@data_file, @template_file, @output_file, @passed_vars)
1427
+ if @data_files
1428
+ cli_liquify(@data_files, @template_file, @output_file, @passed_vars)
1312
1429
  end
1313
1430
  if @index_file
1314
1431
  @logger.warn "Rendering via command line arguments is not yet implemented. Use a config file."
1315
1432
  end
1316
1433
  else
1317
1434
  @logger.debug "Executing... config_build"
1318
- config_build(@config_file, @passed_vars, @parseconfig)
1435
+ config_build(@config_file, @passed_vars, @data_files, @parseconfig)
1319
1436
  end
@@ -1,3 +1,3 @@
1
1
  module Liquidoc
2
- VERSION = "0.10.0"
2
+ VERSION = "0.12.0-rc4"
3
3
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquidoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0.pre.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Dominick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-28 00:00:00.000000000 Z
11
+ date: 2020-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.15'
20
20
  type: :development
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: '1.15'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 12.3.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: asciidoctor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.5'
47
+ version: '2.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: '1.5'
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: json
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: asciidoctor-pdf
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 1.5.0.alpha.16
89
+ version: 1.5.3
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 1.5.0.alpha.16
96
+ version: 1.5.3
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: logger
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -128,28 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.0'
131
+ version: '4.0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.0'
138
+ version: '4.0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: jekyll-asciidoc
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '2.1'
145
+ version: '3.0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '2.1'
152
+ version: '3.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: highline
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -177,7 +177,7 @@ files:
177
177
  - bin/liquidoc
178
178
  - lib/liquidoc.rb
179
179
  - lib/liquidoc/version.rb
180
- homepage: https://github.com/scalingdata/liquidoc
180
+ homepage: https://github.com/DocOps/liquidoc
181
181
  licenses:
182
182
  - MIT
183
183
  metadata:
@@ -197,8 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
197
  - !ruby/object:Gem::Version
198
198
  version: 2.7.0
199
199
  requirements: []
200
- rubyforge_project:
201
- rubygems_version: 2.7.6
200
+ rubygems_version: 3.0.3
202
201
  signing_key:
203
202
  specification_version: 4
204
203
  summary: A highly configurable command-line tool for parsing data and content in common