llt-review 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 +17 -0
- data/.rspec +2 -0
- data/.travis.yml +8 -0
- data/Gemfile +14 -0
- data/LICENSE.txt +22 -0
- data/README.md +35 -0
- data/Rakefile +6 -0
- data/config.ru +2 -0
- data/lib/llt/review/alignment/comparison.rb +6 -0
- data/lib/llt/review/alignment/data.rb +7 -0
- data/lib/llt/review/alignment/difference/nrefs.rb +29 -0
- data/lib/llt/review/alignment/difference/sentence.rb +6 -0
- data/lib/llt/review/alignment/difference/translation.rb +27 -0
- data/lib/llt/review/alignment/difference/word.rb +27 -0
- data/lib/llt/review/alignment/difference.rb +11 -0
- data/lib/llt/review/alignment/gold.rb +9 -0
- data/lib/llt/review/alignment/parser/helper.rb +43 -0
- data/lib/llt/review/alignment/parser/nokogiri_handler.rb +44 -0
- data/lib/llt/review/alignment/parser/ox_handler.rb +68 -0
- data/lib/llt/review/alignment/parser.rb +13 -0
- data/lib/llt/review/alignment/report/generic.rb +10 -0
- data/lib/llt/review/alignment/report/translation.rb +7 -0
- data/lib/llt/review/alignment/report/word.rb +7 -0
- data/lib/llt/review/alignment/report.rb +15 -0
- data/lib/llt/review/alignment/reviewable.rb +6 -0
- data/lib/llt/review/alignment/sentence.rb +18 -0
- data/lib/llt/review/alignment/translation.rb +13 -0
- data/lib/llt/review/alignment/word.rb +38 -0
- data/lib/llt/review/alignment.rb +23 -0
- data/lib/llt/review/api.rb +37 -0
- data/lib/llt/review/common/comparison.rb +91 -0
- data/lib/llt/review/common/difference/sentence.rb +31 -0
- data/lib/llt/review/common/difference/word.rb +22 -0
- data/lib/llt/review/common/difference.rb +9 -0
- data/lib/llt/review/common/golden.rb +14 -0
- data/lib/llt/review/common/report/generic.rb +32 -0
- data/lib/llt/review/common/report.rb +66 -0
- data/lib/llt/review/common/reviewable.rb +34 -0
- data/lib/llt/review/common/sentence.rb +41 -0
- data/lib/llt/review/common.rb +12 -0
- data/lib/llt/review/helpers/diff_reporter.rb +45 -0
- data/lib/llt/review/helpers/parsing/helper/for_nokogiri.rb +9 -0
- data/lib/llt/review/helpers/parsing/helper.rb +30 -0
- data/lib/llt/review/helpers/parsing/result.rb +7 -0
- data/lib/llt/review/helpers/parsing.rb +29 -0
- data/lib/llt/review/helpers/reportable.rb +81 -0
- data/lib/llt/review/helpers.rb +10 -0
- data/lib/llt/review/treebank/comparison.rb +6 -0
- data/lib/llt/review/treebank/difference/attribute.rb +11 -0
- data/lib/llt/review/treebank/difference/datapoint.rb +28 -0
- data/lib/llt/review/treebank/difference/generic.rb +32 -0
- data/lib/llt/review/treebank/difference/head.rb +14 -0
- data/lib/llt/review/treebank/difference/lemma.rb +9 -0
- data/lib/llt/review/treebank/difference/postag.rb +37 -0
- data/lib/llt/review/treebank/difference/relation.rb +11 -0
- data/lib/llt/review/treebank/difference/sentence.rb +6 -0
- data/lib/llt/review/treebank/difference/word.rb +8 -0
- data/lib/llt/review/treebank/difference.rb +15 -0
- data/lib/llt/review/treebank/gold.rb +8 -0
- data/lib/llt/review/treebank/parser/helper.rb +9 -0
- data/lib/llt/review/treebank/parser/nokogiri_handler.rb +30 -0
- data/lib/llt/review/treebank/parser/ox_handler.rb +42 -0
- data/lib/llt/review/treebank/parser.rb +13 -0
- data/lib/llt/review/treebank/postag.rb +65 -0
- data/lib/llt/review/treebank/report/datapoints.rb +12 -0
- data/lib/llt/review/treebank/report/generic.rb +10 -0
- data/lib/llt/review/treebank/report/lemma.rb +8 -0
- data/lib/llt/review/treebank/report/postag/datapoint.rb +16 -0
- data/lib/llt/review/treebank/report/postag.rb +7 -0
- data/lib/llt/review/treebank/report/postags.rb +27 -0
- data/lib/llt/review/treebank/report/relation.rb +7 -0
- data/lib/llt/review/treebank/report.rb +19 -0
- data/lib/llt/review/treebank/reviewable.rb +6 -0
- data/lib/llt/review/treebank/sentence.rb +25 -0
- data/lib/llt/review/treebank/word.rb +53 -0
- data/lib/llt/review/treebank.rb +22 -0
- data/lib/llt/review/version.rb +5 -0
- data/lib/llt/review.rb +118 -0
- data/llt-review.gemspec +25 -0
- data/spec/lib/llt/review/alignment/parser_spec.rb +72 -0
- data/spec/lib/llt/review/alignment_spec.rb +242 -0
- data/spec/lib/llt/review/helpers/reportable_spec.rb +26 -0
- data/spec/lib/llt/review/treebank/parser_spec.rb +21 -0
- data/spec/lib/llt/review/treebank/postag_spec.rb +22 -0
- data/spec/lib/llt/review/treebank_spec.rb +222 -0
- data/spec/lib/llt/review_spec.rb +7 -0
- data/spec/spec_helper.rb +22 -0
- metadata +195 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c67647d0b4ba29bff3feb4066ed2d11eb2253a41
|
4
|
+
data.tar.gz: 6f8ba9c45e85319859765ce378ead8a654a2f12a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6bf66bd60ab8558ea51be1fa765c87540cbd419e993cdfe1ec4ce188284c19685c739f05f88115d4cb6b93bddcbdca91a71c19be378fa91c66653dbb6bc3427b
|
7
|
+
data.tar.gz: 9bba65d16cc077da638427d74aa31d84e258aa14f2456757903ea801cfd08e7b91999bfeee6526f503831d7c17e39342b65f2cf1c5bd8f9feac7389f4ed8082b
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in llt-diff.gemspec
|
4
|
+
gemspec
|
5
|
+
gem 'coveralls', require: false
|
6
|
+
|
7
|
+
gem 'llt-core', git: 'git://github.com/latin-language-toolkit/llt-core.git'
|
8
|
+
|
9
|
+
gem 'ox', platform: :ruby
|
10
|
+
|
11
|
+
platform :jruby do
|
12
|
+
gem 'nokogiri'
|
13
|
+
gem 'jruby-httpclient'
|
14
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 LFDM
|
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,35 @@
|
|
1
|
+
# LLT::Review
|
2
|
+
|
3
|
+
[![Version](http://allthebadges.io/latin-language-toolkit/llt-review/badge_fury.png)](http://allthebadges.io/latin-language-toolkit/llt-review/badge_fury)
|
4
|
+
[![Dependencies](http://allthebadges.io/latin-language-toolkit/llt-review/gemnasium.png)](http://allthebadges.io/latin-language-toolkit/llt-review/gemnasium)
|
5
|
+
[![Build Status](http://allthebadges.io/latin-language-toolkit/llt-review/travis.png)](http://allthebadges.io/latin-language-toolkit/llt-review/travis)
|
6
|
+
[![Coverage](http://allthebadges.io/latin-language-toolkit/llt-review/coveralls.png)](http://allthebadges.io/latin-language-toolkit/llt-review/coveralls)
|
7
|
+
[![Code Climate](http://allthebadges.io/latin-language-toolkit/llt-review/code_climate.png)](http://allthebadges.io/latin-language-toolkit/llt-review/code_climate)
|
8
|
+
|
9
|
+
Compares annotations
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
gem 'llt-review'
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install llt-review
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
TODO: Write usage instructions here
|
28
|
+
|
29
|
+
## Contributing
|
30
|
+
|
31
|
+
1. Fork it ( http://github.com/<my-github-username>/llt-review/fork )
|
32
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
33
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
34
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
35
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/config.ru
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
module LLT
|
2
|
+
module Review::Alignment::Difference
|
3
|
+
|
4
|
+
# This whole class could arguably deleted, not sure there is any need for it
|
5
|
+
|
6
|
+
class Nrefs
|
7
|
+
include Core::Structures::HashContainable
|
8
|
+
include Review::Helpers::ReviewReporter
|
9
|
+
|
10
|
+
xml_tag :nrefs
|
11
|
+
|
12
|
+
def initialize(original, new)
|
13
|
+
@id = id
|
14
|
+
@original = original
|
15
|
+
@new = new
|
16
|
+
@container = {}
|
17
|
+
end
|
18
|
+
|
19
|
+
def id
|
20
|
+
xml_tag
|
21
|
+
end
|
22
|
+
|
23
|
+
def xml_attributes
|
24
|
+
{ original: @original, new: @new, unique: @unique }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module LLT
|
2
|
+
module Review::Alignment::Difference
|
3
|
+
class Translation
|
4
|
+
include Core::Structures::HashContainable
|
5
|
+
include Review::Helpers::ReviewReporter
|
6
|
+
|
7
|
+
xml_tag :translation
|
8
|
+
|
9
|
+
attr_reader :original, :new
|
10
|
+
|
11
|
+
def initialize(original, new)
|
12
|
+
@id = id
|
13
|
+
@original = original
|
14
|
+
@new = new
|
15
|
+
@container = {}
|
16
|
+
end
|
17
|
+
|
18
|
+
def id
|
19
|
+
xml_tag
|
20
|
+
end
|
21
|
+
|
22
|
+
def xml_attributes
|
23
|
+
{ original: @original, new: @new, unique: @unique }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module LLT
|
2
|
+
module Review::Alignment::Difference
|
3
|
+
class Word < Review::Common::Difference::Word
|
4
|
+
def diff_id
|
5
|
+
@diff_id ||= "#{@id}:#{original}|#{new}"
|
6
|
+
end
|
7
|
+
|
8
|
+
# go right to the translation - we have the nrefs too, not sure
|
9
|
+
# if we need them actually
|
10
|
+
def original
|
11
|
+
@original ||= @container[:translation].original
|
12
|
+
end
|
13
|
+
|
14
|
+
def new
|
15
|
+
@new ||= @container[:translation].new
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def write_to_report(report, unique)
|
21
|
+
super
|
22
|
+
container = report[:words]
|
23
|
+
container[item.to_s].add_wrong(unique)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment
|
3
|
+
module Difference
|
4
|
+
require 'llt/review/alignment/difference/sentence'
|
5
|
+
require 'llt/review/alignment/difference/word'
|
6
|
+
require 'llt/review/alignment/difference/translation'
|
7
|
+
require 'llt/review/alignment/difference/nrefs'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment::Parser
|
3
|
+
module Helper
|
4
|
+
def namespace
|
5
|
+
Review::Alignment
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def register_sentence(value)
|
11
|
+
super
|
12
|
+
@sentence.lang1 = @lang1
|
13
|
+
@sentence.lang2 = @lang2
|
14
|
+
end
|
15
|
+
|
16
|
+
def register_word(value)
|
17
|
+
value = stripped_id(value)
|
18
|
+
return super if @original
|
19
|
+
@translation = namespace.const_get(:Translation).new(value.to_i)
|
20
|
+
end
|
21
|
+
|
22
|
+
def register_translation(refs)
|
23
|
+
refs.split.map { |ref| stripped_id(ref).to_i }.each do |ref|
|
24
|
+
@sentence[ref].add(@translation)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def stripped_id(value)
|
29
|
+
value.slice(/(?<=-).*/)
|
30
|
+
end
|
31
|
+
|
32
|
+
def set_orig_or_translation(value)
|
33
|
+
@original = value == "L1"
|
34
|
+
end
|
35
|
+
|
36
|
+
def set_text(value)
|
37
|
+
return unless @in_text
|
38
|
+
target = @original ? @word : @translation
|
39
|
+
target.text = value
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
|
3
|
+
module LLT
|
4
|
+
class Review::Alignment::Parser
|
5
|
+
class NokogiriHandler < Nokogiri::XML::SAX::Document
|
6
|
+
|
7
|
+
include Review::Helpers::Parsing::Helper
|
8
|
+
include Review::Helpers::Parsing::Helper::ForNokogiri
|
9
|
+
include Helper
|
10
|
+
|
11
|
+
def parse(data)
|
12
|
+
Nokogiri::XML::SAX::Parser.new(self).parse(data)
|
13
|
+
end
|
14
|
+
|
15
|
+
def start_element(name, attrs = [])
|
16
|
+
case name
|
17
|
+
when 'w' then register_word(first_val(attrs))
|
18
|
+
when 'text' then @in_text = true
|
19
|
+
when 'refs' then register_translation(first_val(attrs)) unless @original
|
20
|
+
when 'wds' then set_orig_or_translation(Hash[attrs]['lnum'])
|
21
|
+
when 'sentence' then register_sentence(Hash[attrs]['id'])
|
22
|
+
when 'language' then set_languages(attrs)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def end_element(name)
|
27
|
+
@in_text = false if name == 'text'
|
28
|
+
end
|
29
|
+
|
30
|
+
def characters(string)
|
31
|
+
set_text(string)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def set_languages(attrs)
|
37
|
+
hsh = Hash[attrs]
|
38
|
+
lang = hsh['xml:lang']
|
39
|
+
hsh['lnum'] == 'l1' ? @lang1 = lang : @lang2 = lang
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'ox'
|
2
|
+
|
3
|
+
module LLT
|
4
|
+
class Review::Alignment::Parser
|
5
|
+
class OxHandler < Ox::Sax
|
6
|
+
|
7
|
+
include Review::Helpers::Parsing::Helper
|
8
|
+
include Helper
|
9
|
+
|
10
|
+
def parse(data)
|
11
|
+
Ox.sax_parse(self, data)
|
12
|
+
end
|
13
|
+
|
14
|
+
def start_element(name)
|
15
|
+
if @in_word
|
16
|
+
case name
|
17
|
+
when :text then @in_text = true
|
18
|
+
when :refs then @in_refs = true
|
19
|
+
end
|
20
|
+
else
|
21
|
+
case name
|
22
|
+
when :w then @in_word = true
|
23
|
+
when :wds then @in_wds = true
|
24
|
+
when :sentence then @in_sentence = true
|
25
|
+
when :language then @in_language = true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def end_element(name)
|
31
|
+
case name
|
32
|
+
when :w then @in_word = false
|
33
|
+
when :text then @in_text = false
|
34
|
+
when :refs then @in_refs = false
|
35
|
+
when :wds then @in_wds = false
|
36
|
+
when :sentence then @in_sentence = false
|
37
|
+
when :language then @in_language = false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def attr(name, value)
|
42
|
+
if @in_word
|
43
|
+
case name
|
44
|
+
when :n then register_word(value)
|
45
|
+
when :nrefs then register_translation(value) unless @original
|
46
|
+
end
|
47
|
+
else
|
48
|
+
case
|
49
|
+
when @in_wds then set_orig_or_translation(value) if name == :lnum
|
50
|
+
when @in_sentence then register_sentence(value) if name == :id
|
51
|
+
when @in_language then set_languages(name, value)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def text(value)
|
57
|
+
set_text(value)
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def set_languages(name, value)
|
63
|
+
return unless name == :"xml:lang"
|
64
|
+
@lang1 ? @lang2 = value : @lang1 = value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment
|
3
|
+
class Parser
|
4
|
+
require 'llt/review/alignment/parser/helper'
|
5
|
+
|
6
|
+
autoload :NokogiriHandler, 'llt/review/alignment/parser/nokogiri_handler'
|
7
|
+
autoload :OxHandler, 'llt/review/alignment/parser/ox_handler'
|
8
|
+
|
9
|
+
include Review::Helpers::Parsing
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment
|
3
|
+
class Report < Review::Common::Report
|
4
|
+
require 'llt/review/alignment/report/generic'
|
5
|
+
require 'llt/review/alignment/report/word'
|
6
|
+
require 'llt/review/alignment/report/translation'
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def namespace
|
11
|
+
Report
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment
|
3
|
+
class Sentence < Review::Common::Sentence
|
4
|
+
|
5
|
+
attr_accessor :lang1, :lang2
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def report_container
|
10
|
+
{ words: Report::Generic.new(:words, size, true) }
|
11
|
+
end
|
12
|
+
|
13
|
+
def diff_namespace
|
14
|
+
Review::Alignment::Difference
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment
|
3
|
+
class Word
|
4
|
+
include Core::Structures::HashContainable
|
5
|
+
|
6
|
+
attr_accessor :text
|
7
|
+
|
8
|
+
def to_s
|
9
|
+
@text
|
10
|
+
end
|
11
|
+
|
12
|
+
def translation
|
13
|
+
@translation ||= @container.values.map(&:to_s).join(' ')
|
14
|
+
end
|
15
|
+
|
16
|
+
def nrefs
|
17
|
+
@container.keys.map(&:to_s).join(' ')
|
18
|
+
end
|
19
|
+
|
20
|
+
# star is for additional params other classes like Treebank need
|
21
|
+
def compare(other, diff_container, *)
|
22
|
+
unless translation == other.translation
|
23
|
+
d = diff_container[id] ||= Difference::Word.new(self)
|
24
|
+
d.add(Difference::Translation.new(translation, other.translation))
|
25
|
+
d.add(Difference::Nrefs.new(nrefs, other.nrefs))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def report
|
30
|
+
@report ||= begin
|
31
|
+
rep = Report::Word.new(@text)
|
32
|
+
rep.add(Report::Translation.new(translation))
|
33
|
+
rep
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module LLT
|
2
|
+
class Review::Alignment < Review
|
3
|
+
require 'llt/review/alignment/parser'
|
4
|
+
|
5
|
+
require 'llt/review/alignment/report'
|
6
|
+
require 'llt/review/alignment/gold'
|
7
|
+
require 'llt/review/alignment/reviewable'
|
8
|
+
require 'llt/review/alignment/comparison'
|
9
|
+
|
10
|
+
require 'llt/review/alignment/sentence'
|
11
|
+
require 'llt/review/alignment/word'
|
12
|
+
require 'llt/review/alignment/translation'
|
13
|
+
|
14
|
+
require 'llt/review/alignment/difference'
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def root_identifier
|
19
|
+
'alignment'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'sinatra/base'
|
2
|
+
require 'sinatra/respond_with'
|
3
|
+
require 'llt/review'
|
4
|
+
|
5
|
+
class Api < Sinatra::Base
|
6
|
+
register Sinatra::RespondWith
|
7
|
+
|
8
|
+
get '/:type/diff' do
|
9
|
+
gold = Array(params[:gold])
|
10
|
+
rev = Array(params[:reviewable])
|
11
|
+
|
12
|
+
comp_param = params[:compare]
|
13
|
+
comparables = comp_param ? Array(comp_param).map(&:to_sym) : nil
|
14
|
+
|
15
|
+
klass = params[:type]
|
16
|
+
# return an error if klass is neither treebank nor Alignment
|
17
|
+
|
18
|
+
diff = LLT::Review.const_get(klass.capitalize).new
|
19
|
+
puts comparables
|
20
|
+
diff.diff(gold, rev, comparables)
|
21
|
+
|
22
|
+
respond_to do |f|
|
23
|
+
f.xml { diff.to_xml }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
get '/:type/report' do
|
28
|
+
uris = Array(params[:uri])
|
29
|
+
klass = params[:type]
|
30
|
+
reporter = LLT::Review.const_get(klass.capitalize).new
|
31
|
+
reporter.report(*uris)
|
32
|
+
|
33
|
+
respond_to do |f|
|
34
|
+
f.xml { reporter.to_xml(:report)}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|