lbp 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +8 -0
- data/bin/lbp +115 -0
- data/lbp.gemspec +36 -0
- data/lib/lbp.rb +11 -0
- data/lib/lbp/collection.rb +131 -0
- data/lib/lbp/functions.rb +12 -0
- data/lib/lbp/item.rb +153 -0
- data/lib/lbp/item_group.rb +52 -0
- data/lib/lbp/paragraph.rb +87 -0
- data/lib/lbp/transcription.rb +249 -0
- data/lib/lbp/version.rb +3 -0
- data/spec/collection_spec.rb +60 -0
- data/spec/config_globals.rb +18 -0
- data/spec/item_group_spec.rb +39 -0
- data/spec/item_spec.rb +74 -0
- data/spec/paragraph_spec.rb +37 -0
- data/spec/spec_helper.rb +89 -0
- data/spec/transcription_spec.rb +120 -0
- metadata +218 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: aff42dc77762adda3fbe30e51ace4f0dea49fbf8
|
4
|
+
data.tar.gz: ffa83322779d86566f4d469b33e794328abe1b2a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c33023bf158b98a08f4b8ca52f88292c5a7f79eaf2ac690f0188c52735b076565ba709715546d34f4bf9ba74c8c6191367825cb5ba8c6b8703bb3e738f476307
|
7
|
+
data.tar.gz: 3a39e659d08b632c0a898ef5765cfba792ebbb93b5000cb6c0c6ef0934dec0bf0d1d0d580618bc217640b8690d29b0efeb565022c2f20dfb47b9f2b5659226c7
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
lbp
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.2.0
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Jeffrey C. Witt
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Lbp
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'lbp'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
|
15
|
+
$ bundle
|
16
|
+
|
17
|
+
Or install it yourself as:
|
18
|
+
|
19
|
+
$ gem install lbp
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
TODO: Write usage instructions here
|
24
|
+
|
25
|
+
## Contributing
|
26
|
+
|
27
|
+
1. Fork it ( https://github.com/[my-github-username]/lbp/fork )
|
28
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
29
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
30
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
31
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/bin/lbp
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rdf'
|
4
|
+
require 'rdf/rdfxml'
|
5
|
+
require 'rdf/ntriples'
|
6
|
+
require 'thor'
|
7
|
+
require 'openssl'
|
8
|
+
require 'pry'
|
9
|
+
require 'uri'
|
10
|
+
require 'lbp'
|
11
|
+
|
12
|
+
class LbpCli < Thor
|
13
|
+
|
14
|
+
desc "hello", "say hello to NAME"
|
15
|
+
def hello(name)
|
16
|
+
puts "Hello #{name}!"
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "init", "create projectifles dirs in current working directory"
|
20
|
+
def init(dir)
|
21
|
+
directories = ["#{dir}/Conf", "#{dir}/Textfiles", "#{dir}/citationlists"]
|
22
|
+
FileUtils.mkpath(directories)
|
23
|
+
@dir
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "projecfile", "make projetfile from SCTA"
|
27
|
+
def projectfile(sctaurl, installdir)
|
28
|
+
resource = RDF::Resource.new(RDF::URI.new(sctaurl))
|
29
|
+
#resource = RDF::Resource(RDF::URI.new("http://rdf.rubyforge.org/"))
|
30
|
+
graph = RDF::Graph.load(resource)
|
31
|
+
data = graph.data
|
32
|
+
title = data.query(:predicate => RDF::DC11.title).first.object
|
33
|
+
itemarray = []
|
34
|
+
|
35
|
+
headerdata = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
36
|
+
<lbpProjectFile>
|
37
|
+
<header>
|
38
|
+
<collectionTitle>#{title}</collectionTitle>
|
39
|
+
<localTextsDirectory>/Users/JCWitt/WebPages/lbplib-testfiles/pp-projectfiles/GitTextfiles/</localTextsDirectory>
|
40
|
+
<citationListsDirectory>/Users/JCWitt/WebPages/lbplib-testfiles/pp-projectfiles/citationlists/</citationListsDirectory>
|
41
|
+
<xsltDirectories>
|
42
|
+
<schema version='lbp-0.0.1' default='true'>
|
43
|
+
<critical>/Users/JCWitt/WebPages/lbpwrapper/lombardpress/public/pl_xslt_stylesheets/</critical>
|
44
|
+
<documentary>/Users/JCWitt/WebPages/lbpwrapper/lombardpress/public/pl_xslt_stylesheets/</documentary>
|
45
|
+
<main_view>text_display.xsl</main_view>
|
46
|
+
<index_view>'text_display_index.xsl'</index_view>
|
47
|
+
<clean_view>clean_forStatistics.xsl</clean_view>
|
48
|
+
<plain_text>plaintext.xsl</plain_text>
|
49
|
+
<toc>lectio_outline.xsl</toc>
|
50
|
+
</schema>
|
51
|
+
<schema version='lbp-0.0.2' default='true'>
|
52
|
+
<critical>/Users/JCWitt/WebPages/lbpwrapper/lombardpress/public/pl_xslt_stylesheets/</critical>
|
53
|
+
<documentary>/Users/JCWitt/WebPages/lbpwrapper/lombardpress/public/pl_xslt_stylesheets/</documentary>
|
54
|
+
<main_view>text_display.xsl</main_view>
|
55
|
+
<index_view>'text_display_index.xsl'</index_view>
|
56
|
+
<clean_view>clean_forStatistics.xsl</clean_view>
|
57
|
+
<plain_text>plaintext.xsl</plain_text>
|
58
|
+
<toc>lectio_outline.xsl</toc>
|
59
|
+
</schema>
|
60
|
+
</xsltDirectories>
|
61
|
+
<git_repo>bitbucket.org/jeffreycwitt/</git_repo>
|
62
|
+
</header>
|
63
|
+
<listofFileNames>
|
64
|
+
<div id=\"body\">"
|
65
|
+
|
66
|
+
itemarray << headerdata
|
67
|
+
|
68
|
+
data.query(:predicate => RDF::DC.hasPart).each do |part|
|
69
|
+
|
70
|
+
newresource = RDF::Resource.new(part.object)
|
71
|
+
newgraph = RDF::Graph.load(newresource)
|
72
|
+
newdata = newgraph.data
|
73
|
+
|
74
|
+
#type = newdata.query(:predicate => RDF::RDF.type).first.object.to_s
|
75
|
+
#type_slug = URI(type.object.to_s).path.split('/').last
|
76
|
+
|
77
|
+
status = newdata.query(:predicate => RDF::URI.new("http://scta.info/property/status")).first.object
|
78
|
+
|
79
|
+
unless status == 'Not Started'
|
80
|
+
title = newdata.query(:predicate => RDF::DC11.title).first.object
|
81
|
+
id = URI(part.object.to_s).path.split('/').last
|
82
|
+
itemunit = "
|
83
|
+
<item live='#{status}'>
|
84
|
+
<fileName filestem='#{id}'>#{id}.xml</fileName>
|
85
|
+
<title>#{title}</title>
|
86
|
+
</item>\n"
|
87
|
+
itemarray << itemunit
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
footerdata = "</div>
|
93
|
+
</listofFileNames>
|
94
|
+
</lbpProjectFile>"
|
95
|
+
|
96
|
+
itemarray << footerdata
|
97
|
+
|
98
|
+
f = File.new("#{installdir}/Conf/projectfile.xml", 'w')
|
99
|
+
|
100
|
+
itemarray.each do |section|
|
101
|
+
f.write(section)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
desc "loaed_text_files", "clone collection repos"
|
105
|
+
def load_text_files(projectfile)
|
106
|
+
collection = Lbp::Collection.new(projectfile)
|
107
|
+
collection.git_clone
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
LbpCli.start(ARGV)
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
data/lbp.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'lbp/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "lbp"
|
8
|
+
spec.version = Lbp::VERSION
|
9
|
+
spec.authors = ["Jeffrey C. Witt"]
|
10
|
+
spec.email = ["jeffreycwitt@gmail.com"]
|
11
|
+
spec.summary = %q{A library for working XML documents conforming the TEI (lbp customized) schema}
|
12
|
+
spec.description = %q{A library for working XML documents conforming the TEI (lbp customized) schema}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
spec.add_runtime_dependency "nokogiri"
|
26
|
+
spec.add_runtime_dependency "rugged"
|
27
|
+
spec.add_runtime_dependency "thor"
|
28
|
+
spec.add_runtime_dependency "rdf"
|
29
|
+
spec.add_runtime_dependency "rdf-rdfxml"
|
30
|
+
spec.add_runtime_dependency "rest-client"
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
end
|
data/lib/lbp.rb
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'rugged'
|
3
|
+
require 'lbp/functions'
|
4
|
+
|
5
|
+
|
6
|
+
module Lbp
|
7
|
+
class Collection
|
8
|
+
#attr_reader :confighash
|
9
|
+
def initialize(projectfile)
|
10
|
+
#@confighash = self.confighash
|
11
|
+
#@projectdatafile_dir = @confighash[:projectdatafile_dir]
|
12
|
+
@projectfile = projectfile
|
13
|
+
end
|
14
|
+
|
15
|
+
def title
|
16
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
17
|
+
title = file.xpath(("//header/collectionTitle")).text
|
18
|
+
end
|
19
|
+
def local_texts_dir
|
20
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
21
|
+
textdir = file.xpath(("//header/localTextsDirectory")).text
|
22
|
+
end
|
23
|
+
|
24
|
+
def citation_lists_dir
|
25
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
26
|
+
citationlistdir = file.xpath(("//header/citationListsDirectory")).text
|
27
|
+
end
|
28
|
+
def git_repo
|
29
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
30
|
+
gitrepo = file.xpath("//header/git_repo").text
|
31
|
+
end
|
32
|
+
#need test
|
33
|
+
def git_clone(username: nil, password: nil)
|
34
|
+
self.items.each do |item|
|
35
|
+
item.git_clone(username: username, password: password)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def xslt_dirs
|
40
|
+
#test change to hash
|
41
|
+
@xslthash = Hash.new
|
42
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
43
|
+
schemas = file.xpath("//header/xsltDirectories/schema")
|
44
|
+
|
45
|
+
schemas.each do |schema|
|
46
|
+
schema_number = schema.attributes["version"].value
|
47
|
+
schema_default = schema.attributes["default"].value
|
48
|
+
@xslthash["#{schema_number}"] = {
|
49
|
+
critical: schema.children.find {|child| child.name == "critical"}.text,
|
50
|
+
documentary: schema.children.find {|child| child.name == "documentary"}.text,
|
51
|
+
main_view: schema.children.find {|child| child.name == "main_view"}.text,
|
52
|
+
index_view: schema.children.find {|child| child.name == "index_view"}.text,
|
53
|
+
clean_view: schema.children.find {|child| child.name == "clean_view"}.text,
|
54
|
+
plain_text: schema.children.find {|child| child.name == "plain_text"}.text,
|
55
|
+
toc: schema.children.find {|child| child.name == "toc"}.text
|
56
|
+
}
|
57
|
+
if schema_default == 'true'
|
58
|
+
@xslthash["default"] = {
|
59
|
+
critical: schema.children.find {|child| child.name == "critical"}.text,
|
60
|
+
documentary: schema.children.find {|child| child.name == "documentary"}.text,
|
61
|
+
main_view: schema.children.find {|child| child.name == "main_view"}.text,
|
62
|
+
index_view: schema.children.find {|child| child.name == "index_view"}.text,
|
63
|
+
clean_view: schema.children.find {|child| child.name == "clean_view"}.text,
|
64
|
+
plain_text: schema.children.find {|child| child.name == "plain_text"}.text,
|
65
|
+
toc: schema.children.find {|child| child.name == "toc"}.text
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
return @xslthash
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
def confighash
|
75
|
+
confighash = {
|
76
|
+
local_texts_dir: self.local_texts_dir,
|
77
|
+
citation_lists_dir: self.citation_lists_dir,
|
78
|
+
xslt_dirs: self.xslt_dirs,
|
79
|
+
git_repo: self.git_repo}
|
80
|
+
end
|
81
|
+
|
82
|
+
def items
|
83
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
84
|
+
result = file.xpath("//div[@id='body']//item/fileName/@filestem")
|
85
|
+
fs_array = result.map do |fs|
|
86
|
+
Item.new(@projectfile, fs.value)
|
87
|
+
end
|
88
|
+
return fs_array
|
89
|
+
end
|
90
|
+
def item(fs)
|
91
|
+
Item.new(@projectfile, fs)
|
92
|
+
end
|
93
|
+
|
94
|
+
def item_filestems
|
95
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
96
|
+
result = file.xpath("//div[@id='body']//item/fileName/@filestem")
|
97
|
+
|
98
|
+
fs_array = result.map do |fs|
|
99
|
+
fs.value
|
100
|
+
end
|
101
|
+
return fs_array
|
102
|
+
end
|
103
|
+
|
104
|
+
def item_titles
|
105
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
106
|
+
result = file.xpath("//div[@id='body']//item/title")
|
107
|
+
|
108
|
+
title_array = result.map do |title|
|
109
|
+
title.text
|
110
|
+
end
|
111
|
+
return title_array
|
112
|
+
end
|
113
|
+
|
114
|
+
def items_fs_title_hash
|
115
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
116
|
+
result = file.xpath("//div[@id='body']//item")
|
117
|
+
|
118
|
+
fs_title_hash = Hash.new
|
119
|
+
|
120
|
+
result.each do |item|
|
121
|
+
title = item.children.find {|child| child.name == "title"}.text
|
122
|
+
fs = item.children.find {|child| child.name == "fileName"}.attributes["filestem"].value
|
123
|
+
fs_title_hash[fs] = title
|
124
|
+
end
|
125
|
+
return fs_title_hash
|
126
|
+
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
require 'nokogiri'
|
3
|
+
require 'open-uri'
|
4
|
+
|
5
|
+
def xslt_transform(xmlfile, xsltfile, xslt_param_array)
|
6
|
+
xml = Nokogiri::XML(open(xmlfile))
|
7
|
+
xslt = Nokogiri::XSLT(open(xsltfile))
|
8
|
+
result_doc = xslt.transform(xml, xslt_param_array)
|
9
|
+
return result_doc
|
10
|
+
end
|
11
|
+
|
12
|
+
|
data/lib/lbp/item.rb
ADDED
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'rugged'
|
3
|
+
require 'lbp/functions'
|
4
|
+
require 'lbp/transcription'
|
5
|
+
|
6
|
+
module Lbp
|
7
|
+
class Item
|
8
|
+
attr_reader :fs, :local_texts_dir, :file_dir, :projectfile, :xslt_dir
|
9
|
+
|
10
|
+
def initialize(projectfile, fs)
|
11
|
+
@fs = fs
|
12
|
+
@projectfile = projectfile
|
13
|
+
|
14
|
+
@confighash = Collection.new(projectfile).confighash
|
15
|
+
@texts_dir = @confighash[:local_texts_dir]
|
16
|
+
@file_dir = @confighash[:local_texts_dir] + @fs + "/"
|
17
|
+
|
18
|
+
end
|
19
|
+
### Item Header Extraction and Metadata Methods
|
20
|
+
def title
|
21
|
+
transcr = Transcription.new(@projectfile, self.file_hash)
|
22
|
+
transcr.title
|
23
|
+
end
|
24
|
+
|
25
|
+
### Begin GIT functions ###
|
26
|
+
def is_git_dir
|
27
|
+
gitpath = @file_dir + ".git"
|
28
|
+
|
29
|
+
if File.directory?(gitpath)
|
30
|
+
true
|
31
|
+
else
|
32
|
+
false
|
33
|
+
end
|
34
|
+
end
|
35
|
+
def git_branches
|
36
|
+
repo = Rugged::Repository.new(@file_dir)
|
37
|
+
branches = repo.branches.map { |branch| branch.name }
|
38
|
+
return branches
|
39
|
+
end
|
40
|
+
def git_current_branch
|
41
|
+
repo = Rugged::Repository.new(@file_dir)
|
42
|
+
current_branch = repo.head.name.gsub(%r!\Arefs/heads/(.*)\z!) { $1 }
|
43
|
+
return current_branch
|
44
|
+
end
|
45
|
+
def git_tags
|
46
|
+
repo = Rugged::Repository.new(@file_dir)
|
47
|
+
tags = repo.tags.map { |tag| tag.name }
|
48
|
+
return tags
|
49
|
+
end
|
50
|
+
#need test for this
|
51
|
+
def git_checkout(branch)
|
52
|
+
repo = Rugged::Repository.new(@file_dir)
|
53
|
+
repo.checkout(branch)
|
54
|
+
end
|
55
|
+
def git_construct_remote_path
|
56
|
+
remote_path = "https://#{@confighash[:git_repo]}#{@fs}.git";
|
57
|
+
end
|
58
|
+
|
59
|
+
def git_username_password_credentials(username, password)
|
60
|
+
Rugged::Credentials::UserPassword
|
61
|
+
credentials = Rugged::Credentials::UserPassword.new(:username=>username, :password=>password)
|
62
|
+
return credentials
|
63
|
+
end
|
64
|
+
#needs a test
|
65
|
+
def git_clone(username: nil, password: nil)
|
66
|
+
remote_path = self.git_construct_remote_path
|
67
|
+
Rugged::Repository.clone_at(remote_path, @file_dir, :credentials => self.git_username_password_credentials(username, password))
|
68
|
+
end
|
69
|
+
#nneds a test
|
70
|
+
def git_pull(username: nil, password: nil)
|
71
|
+
# not sure what the Rugged API is for this.
|
72
|
+
# doesn't like this methods has been created
|
73
|
+
# for now it may have to be constructed from fetch and merge
|
74
|
+
# or my method 'git_pull' could simply delete the existing repository and the re-lcone
|
75
|
+
#this is is what i'm doing below, but it is not ideal
|
76
|
+
self.remove_local_dir
|
77
|
+
self.git_clone(username: username, password: password)
|
78
|
+
end
|
79
|
+
#needs a test
|
80
|
+
def remove_local_dir
|
81
|
+
FileUtils.rm_rf @file_dir
|
82
|
+
end
|
83
|
+
### End Git Methods ###
|
84
|
+
### Begin Order Info ##
|
85
|
+
|
86
|
+
# previous and next functions don't handle ends of arrays very well
|
87
|
+
# they also rely on the "item_filestems" methods which works but should be changed see comments in collection file
|
88
|
+
def previous
|
89
|
+
sequence_array = Collection.new(@projectfile).item_filestems
|
90
|
+
#if sequence_array[sequence_array.index(@fs) - 1 ] != nil
|
91
|
+
previous_fs = sequence_array[sequence_array.index(@fs) - 1]
|
92
|
+
previous_item = Item.new(@projectfile, previous_fs)
|
93
|
+
#else
|
94
|
+
# previous_item = nil
|
95
|
+
#end
|
96
|
+
return previous_item
|
97
|
+
end
|
98
|
+
def next
|
99
|
+
sequence_array = Collection.new(@projectfile).item_filestems
|
100
|
+
#if sequence_array[@sequence_array.index(@fs) + 1 ] != nil
|
101
|
+
next_fs = sequence_array[sequence_array.index(@fs) + 1]
|
102
|
+
next_item = Item.new(@projectfile, next_fs)
|
103
|
+
#else
|
104
|
+
# next_item = nil
|
105
|
+
#end
|
106
|
+
return next_item
|
107
|
+
end
|
108
|
+
def order_number
|
109
|
+
sequence_array = Collection.new(@projectfile).item_filestems
|
110
|
+
array_number = sequence_array.index(@fs)
|
111
|
+
sequence_number = array_number + 1
|
112
|
+
return sequence_number
|
113
|
+
end
|
114
|
+
|
115
|
+
def file_path(source: 'local', wit: 'critical', ed: 'master')
|
116
|
+
if wit == 'critical'
|
117
|
+
if source == "origin"
|
118
|
+
file_path = "https://#{@confighash[:git_repo]}#{@fs}/raw/#{ed}/#{@fs}.xml"
|
119
|
+
else
|
120
|
+
file_path = @file_dir + @fs + ".xml"
|
121
|
+
end
|
122
|
+
else
|
123
|
+
if source == "origin"
|
124
|
+
file_path = "http://#{@confighash[:git_repo]}#{@fs}/raw/#{ed}/#{wit}_#{@fs}.xml"
|
125
|
+
else
|
126
|
+
file_path = @file_dir + wit + "_" + @fs + ".xml"
|
127
|
+
end
|
128
|
+
end
|
129
|
+
return file_path
|
130
|
+
end
|
131
|
+
def file_hash(source: 'local', wit: 'critical', ed: 'master')
|
132
|
+
type = if wit == "critical" then "critical" else "documentary" end
|
133
|
+
filehash = {path: self.file_path(source: source, wit: wit, ed: ed), fs: @fs, ed: ed, type: type, source: source}
|
134
|
+
|
135
|
+
return filehash
|
136
|
+
end
|
137
|
+
|
138
|
+
def transcription(source: 'local', wit: 'critical', ed: 'master')
|
139
|
+
filehash = self.file_hash(source: source, wit: wit, ed: ed)
|
140
|
+
transcr = Transcription.new(@projectfile, filehash)
|
141
|
+
end
|
142
|
+
def transcriptions(source: 'local', ed: 'master')
|
143
|
+
file = Nokogiri::XML(File.read(@projectfile))
|
144
|
+
parts = file.xpath("//item[fileName/@filestem='#{@fs}']/hasParts/part/slug")
|
145
|
+
transcription_array = parts.map do |part|
|
146
|
+
self.transcription(source: source, wit: part.text, ed: ed)
|
147
|
+
end
|
148
|
+
transcription_array << self.transcription(source: source, wit: 'critical', ed: ed)
|
149
|
+
|
150
|
+
return transcription_array
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|