relaton-cli 1.2.1 → 1.3.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
  SHA256:
3
- metadata.gz: 8a02348a5d77b33a2e249bc4aa1a22ed07d8fff2cfdb5323799abc9cc0d0a445
4
- data.tar.gz: e4ba64c5d0d8e5db5ad4e7b3a7be42a13e7bfc22c2beb81336391decb96853b0
3
+ metadata.gz: 7283d682da8a6ace042d4184849ff7007784a240498c11164a235bf6cf38e20f
4
+ data.tar.gz: 17c8c09ebd535f8851c487843d709077aac4a63b11cf145f97e71cccb41ea1f1
5
5
  SHA512:
6
- metadata.gz: ee47c92805a92f72e5a23b554cc8a5737f38392b33a64f9a3d36f6732b61958052ae493a9e2bd0cbb02b2854bf9b453e6b68b82182c4907c9d90e64af7867331
7
- data.tar.gz: 6bac8c0e2f42e093ca23592d7ac908f86389907125d9f39400c6a8c562b322809ca06f9134ffbdacc5b7cb50313438c447d0f7b142c4de400b498a1b07c1937a
6
+ metadata.gz: 29d79e044e21d3c8392fc8d28231e9b8646b227de12bb09669cf9d737d82cc6972c97cce1a0e9c291f132925805c00c3d43eb2a467e93ffbcd99185af7229504
7
+ data.tar.gz: 37952a6bb4ba3feb6cf88ce60a3899428e6da7686c719a6030e4fb6e851609e8c4a2279cfc333d60dae5e094cde8859f8c4f248606f2daa032b052949a6a6f35
@@ -209,3 +209,11 @@ $ relaton yaml2html YAML [<stylesheet>] [<liquid-template-dir>]
209
209
 
210
210
  Render a Relaton YAML file (`filename.yaml`) as an HTML file. The `stylesheet` and `liquid-template-dir` directories are as for <<relaton-xml2html,relaton xml2html>>.
211
211
 
212
+ === relaton convert
213
+
214
+ [source,conxole]
215
+ ----
216
+ $ relaton convert XML -f FORMAT -o OUTPUT-FILE
217
+ ----
218
+
219
+ Convert a Relaton XML document into YAML, AsciiBib, or BibTex format. Allowed -f or --format options are yaml, asciibib, bibtex. If the option -o or --output is omitted then a new file will be created in the folder where the original file is, with the same name but another appropriated extension.
@@ -18,4 +18,3 @@ end
18
18
  require "relaton/cli"
19
19
 
20
20
  Relaton::Cli.start(ARGV)
21
-
@@ -42,7 +42,7 @@ module Relaton
42
42
 
43
43
  def to_xml(opts = {})
44
44
  options = { bibdata: true, date_format: :full }.merge(
45
- opts.select { |k, _v| k.is_a? Symbol },
45
+ opts.select { |k, _v| k.is_a? Symbol }
46
46
  )
47
47
  @bibitem.to_xml nil, **options
48
48
  end
@@ -39,7 +39,7 @@ module Relaton
39
39
  file,
40
40
  style: style || File.join(File.dirname(__FILE__), "../../../templates/index-style.css"),
41
41
  template: template || File.join(File.dirname(__FILE__), "../../../templates/"),
42
- extension: "html",
42
+ extension: "html"
43
43
  ).to_html
44
44
  end
45
45
 
@@ -91,13 +91,6 @@ module Relaton
91
91
  end
92
92
 
93
93
  def write_to_file_collection(content, format)
94
- # if outdir && (content.is_a?(Relaton::Bibcollection))
95
- # FileUtils.mkdir_p(outdir)
96
- # content.items_flattened.each do |item|
97
- # collection = collection_filename(item.docidentifier_code)
98
- # write_to_a_file(item_output(item, format), collection)
99
- # end
100
- # end
101
94
  if outdir && content.is_a?(Relaton::Bibcollection)
102
95
  FileUtils.mkdir_p(outdir)
103
96
  content.items_flattened.each do |item|
@@ -45,7 +45,7 @@ module Relaton
45
45
  desc "yaml2xml YAML", "Convert Relaton YAML into Relaton Collection XML or separate files"
46
46
  option :extension, aliases: :x, default: "rxl", desc: "File extension of Relaton XML files, defaults to 'rxl'"
47
47
  option :prefix, aliases: :p, desc: "Filename prefix of individual Relaton XML files, defaults to empty"
48
- option :outdir, aliases: :o, desc: "Output to the specified directory with individual Relaton Bibdata XML files"
48
+ option :outdir, aliases: :o, desc: "Output to the specified directory with individual Relaton Bibdata XML files"
49
49
  option :require, aliases: :r, type: :array, desc: "Require LIBRARY prior to execution"
50
50
  option :overwrite, aliases: :f, type: :boolean, default: false, desc: "Overwrite the existing file"
51
51
 
@@ -53,7 +53,7 @@ module Relaton
53
53
  Relaton::Cli::YAMLConvertor.to_xml(filename, options)
54
54
  end
55
55
 
56
- desc "xml2yamlnew XML", "Convert Relaton XML into Relaton Bibdata / Bibcollection YAML (and separate files)"
56
+ desc "xml2yaml XML", "Convert Relaton XML into Relaton Bibdata / Bibcollection YAML (and separate files)"
57
57
  option :extension, aliases: :x, default: "yaml", desc: "File extension of Relaton YAML files, defaults to 'yaml'"
58
58
  option :prefix, aliases: :p, desc: "Filename prefix of Relaton XML files, defaults to empty"
59
59
  option :outdir, aliases: :o, desc: "Output to the specified directory with individual Relaton Bibdata YAML files"
@@ -82,6 +82,25 @@ module Relaton
82
82
  Relaton::Cli::YAMLConvertor.to_html(file, style, template)
83
83
  end
84
84
 
85
+ desc "convert XML", "Convert Relaton XML document"
86
+ option :format, aliases: :f, required: true, desc: "Output format (yaml, bibtex, asciibib)"
87
+ option :output, aliases: :o, desc: "Output to the specified file"
88
+
89
+ def convert(file)
90
+ item = Relaton::Cli.parse_xml Nokogiri::XML(File.read(file, encoding: "UTF-8"))
91
+ result = if /yaml|yml/.match?(options[:format])
92
+ item.to_hash.to_yaml
93
+ else item.send "to_#{options[:format]}"
94
+ end
95
+ ext = case options[:format]
96
+ when "bibtex" then "bib"
97
+ when "asciibib" then "adoc"
98
+ else options[:format]
99
+ end
100
+ output = options[:output] || file.sub(/(?<=\.)[^\.]+$/, ext)
101
+ File.write output, result, encoding: "UTF-8"
102
+ end
103
+
85
104
  private
86
105
 
87
106
  # @param code [String]
@@ -1,5 +1,5 @@
1
1
  module Relaton
2
2
  module Cli
3
- VERSION = "1.2.1".freeze
3
+ VERSION = "1.3.0".freeze
4
4
  end
5
5
  end
@@ -1,6 +1,6 @@
1
- require 'yaml'
2
- require 'relaton/cli/base_convertor'
3
- require 'relaton_bib'
1
+ require "yaml"
2
+ require "relaton/cli/base_convertor"
3
+ require "relaton_bib"
4
4
 
5
5
  module Relaton
6
6
  module Cli
@@ -33,7 +33,7 @@ module Relaton
33
33
  # @return [RelatonBib::BibliographicItem,
34
34
  # RelatonIso::IsoBiblioraphicItem]
35
35
  def convert_single_file(content)
36
- if (processor = Registry.instance.by_type(doctype(content['docid'])))
36
+ if (processor = Registry.instance.by_type(doctype(content["docid"])))
37
37
  processor.hash_to_bib content
38
38
  else
39
39
  RelatonBib::BibliographicItem.new(
@@ -50,14 +50,14 @@ module Relaton
50
50
  did = docid.is_a?(Array) ? docid.fetch(0) : docid
51
51
  return unless did
52
52
 
53
- did['type'] || did.fetch('id')&.match(/^\w+/)&.to_s
53
+ did["type"] || did.fetch("id")&.match(/^\w+/)&.to_s
54
54
  end
55
55
  end
56
56
 
57
57
  private
58
58
 
59
59
  def default_ext
60
- 'rxl'
60
+ "rxl"
61
61
  end
62
62
 
63
63
  def file_content
@@ -78,12 +78,12 @@ module Relaton
78
78
  end
79
79
 
80
80
  def convert_collection(content)
81
- if content.has_key?('root')
82
- content['root']['items'] = content['root']['items'].map do |i|
81
+ if content.has_key?("root")
82
+ content["root"]["items"] = content["root"]["items"].map do |i|
83
83
  # RelatonBib::HashConverter::hash_to_bib(i)
84
84
  self.class.convert_single_file(i)
85
85
  end
86
- Relaton::Bibcollection.new(content['root'])
86
+ Relaton::Bibcollection.new(content["root"])
87
87
  end
88
88
  end
89
89
 
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency "simplecov"
35
35
 
36
36
  spec.add_runtime_dependency "liquid"
37
- spec.add_runtime_dependency "relaton", "~> 1.2.0"
37
+ spec.add_runtime_dependency "relaton", "~> 1.3.0"
38
38
  spec.add_runtime_dependency "thor"
39
39
  # spec.add_runtime_dependency 'byebug'
40
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-27 00:00:00.000000000 Z
11
+ date: 2020-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 1.2.0
173
+ version: 1.3.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 1.2.0
180
+ version: 1.3.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: thor
183
183
  requirement: !ruby/object:Gem::Requirement