drep 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +4 -0
- data/Manifest.txt +20 -0
- data/PostInstall.txt +6 -0
- data/README.rdoc +93 -0
- data/README.txt +93 -0
- data/Rakefile +44 -0
- data/assets/providers/drep_ml_provider.rb +122 -0
- data/assets/rules/drep_wa_rules.rb +151 -0
- data/assets/templates/drep_tda_template.erb +110 -0
- data/bin/drep +24 -0
- data/lib/drep/alterers/drep_extenders.rb +29 -0
- data/lib/drep/alterers/drep_helpers.rb +221 -0
- data/lib/drep/alterers/drep_validators.rb +117 -0
- data/lib/drep/core/drep_binder.rb +102 -0
- data/lib/drep/core/drep_environment.rb +47 -0
- data/lib/drep/core/drep_executer.rb +199 -0
- data/lib/drep/core/interfaces/drep_runnable.rb +22 -0
- data/lib/drep/drep_cli.rb +267 -0
- data/lib/drep.rb +48 -0
- data//321opying.txt +679 -0
- metadata +117 -0
data/History.txt
ADDED
data/Manifest.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
PostInstall.txt
|
4
|
+
README.rdoc
|
5
|
+
README.txt
|
6
|
+
Rakefile
|
7
|
+
assets/providers/drep_ml_provider.rb
|
8
|
+
assets/rules/drep_wa_rules.rb
|
9
|
+
assets/templates/drep_tda_template.erb
|
10
|
+
bin/drep
|
11
|
+
lib/drep.rb
|
12
|
+
lib/drep/alterers/drep_extenders.rb
|
13
|
+
lib/drep/alterers/drep_helpers.rb
|
14
|
+
lib/drep/alterers/drep_validators.rb
|
15
|
+
lib/drep/core/drep_binder.rb
|
16
|
+
lib/drep/core/drep_environment.rb
|
17
|
+
lib/drep/core/drep_executer.rb
|
18
|
+
lib/drep/core/interfaces/drep_runnable.rb
|
19
|
+
lib/drep/drep_cli.rb
|
20
|
+
�opying.txt
|
data/PostInstall.txt
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
= Dango Report
|
2
|
+
|
3
|
+
== Description
|
4
|
+
|
5
|
+
DRep is a simple data collector and report generator. It can collect data through a specific
|
6
|
+
data provider and generate a report by populating a specified template with the picked up data.
|
7
|
+
|
8
|
+
== Features:
|
9
|
+
|
10
|
+
* Data source-agnostic report generator
|
11
|
+
* Predefined examples to help you to get started
|
12
|
+
|
13
|
+
== Requirements
|
14
|
+
|
15
|
+
* Ruby 1.8.6 or later
|
16
|
+
|
17
|
+
=== Extra Dependencies
|
18
|
+
|
19
|
+
* nokogiri (version 1.3.2 or later)
|
20
|
+
|
21
|
+
Required for the bundled example and most likely for the majority of custom data providers
|
22
|
+
Use <em>--ignore-dependencies</em> Gem flag if you do not want to install this library alongside with the DRep
|
23
|
+
|
24
|
+
=== Extra Development Dependencies
|
25
|
+
|
26
|
+
* newgem (version 1.5.1 or later)
|
27
|
+
|
28
|
+
== Installation
|
29
|
+
|
30
|
+
=== Gem Installation
|
31
|
+
|
32
|
+
In order to setup DRep you will need to have RubyGems installed.
|
33
|
+
If you have it, then you can proceed with the following command:
|
34
|
+
|
35
|
+
gem install drep
|
36
|
+
|
37
|
+
Note that you must have the correspondent account privileges
|
38
|
+
on your system in order to use this commands.
|
39
|
+
|
40
|
+
For other software bundles (including links for the source code packages)
|
41
|
+
consider visiting the official page of the project.
|
42
|
+
|
43
|
+
* http://85.17.184.9/drep
|
44
|
+
|
45
|
+
== Synopsis
|
46
|
+
|
47
|
+
For now, DRep can only be used as a standalone command line application.
|
48
|
+
|
49
|
+
=== Command Line Usage
|
50
|
+
|
51
|
+
The list of command line options can be obtained from the DRep executable with one of the following commands:
|
52
|
+
|
53
|
+
drep -h
|
54
|
+
drep --help
|
55
|
+
|
56
|
+
== Development
|
57
|
+
|
58
|
+
=== Source Repositories
|
59
|
+
|
60
|
+
DRep is currently hosted at RubyForge and GitHub.
|
61
|
+
|
62
|
+
The RubyForge page is
|
63
|
+
* http://rubyforge.org/projects/drep
|
64
|
+
|
65
|
+
The github web page is
|
66
|
+
* http://github.com/tda/drep
|
67
|
+
|
68
|
+
The public git clone URL is
|
69
|
+
* http://github.com/tda/drep.git
|
70
|
+
|
71
|
+
== Additional Information
|
72
|
+
|
73
|
+
Author:: Toksaitov Dmitrii Alexandrovich <toksaitov.d@gmail.com>
|
74
|
+
|
75
|
+
Project web site:: http://85.17.184.9/drep
|
76
|
+
Project forum:: http://groups.google.com/group/drep-system
|
77
|
+
|
78
|
+
== License
|
79
|
+
|
80
|
+
(The GNU General Public License)
|
81
|
+
|
82
|
+
DRep is a simple data collector and report generator.
|
83
|
+
Copyright (C) 2009 Toksaitov Dmitrii Alexandrovich
|
84
|
+
|
85
|
+
This program is free software: you can redistribute it and/or modify
|
86
|
+
it under the terms of the GNU General Public License as published by
|
87
|
+
the Free Software Foundation, either version 3 of the License, or
|
88
|
+
(at your option) any later version.
|
89
|
+
|
90
|
+
This program is distributed in the hope that it will be useful,
|
91
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
92
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
93
|
+
GNU General Public License for more details.
|
data/README.txt
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
= Dango Report
|
2
|
+
|
3
|
+
== Description
|
4
|
+
|
5
|
+
DRep is a simple data collector and report generator. It can collect data through a specific
|
6
|
+
data provider and generate a report by populating a specified template with the picked up data.
|
7
|
+
|
8
|
+
== Features:
|
9
|
+
|
10
|
+
* Data source-agnostic report generator
|
11
|
+
* Predefined examples to help you to get started
|
12
|
+
|
13
|
+
== Requirements
|
14
|
+
|
15
|
+
* Ruby 1.8.6 or later
|
16
|
+
|
17
|
+
=== Extra Dependencies
|
18
|
+
|
19
|
+
* nokogiri (version 1.3.2 or later)
|
20
|
+
|
21
|
+
Required for the bundled example and most likely for the majority of custom data providers
|
22
|
+
Use "--ignore- dependencies" Gem flag if you do not want to install this library alongside with the DRep
|
23
|
+
|
24
|
+
=== Extra Development Dependencies
|
25
|
+
|
26
|
+
* newgem (version 1.5.1 or later)
|
27
|
+
|
28
|
+
== Installation
|
29
|
+
|
30
|
+
=== Gem Installation
|
31
|
+
|
32
|
+
In order to setup DRep you will need to have RubyGems installed.
|
33
|
+
If you have it, then you can proceed with the following command:
|
34
|
+
|
35
|
+
gem install drep
|
36
|
+
|
37
|
+
Note that you must have the correspondent account privileges
|
38
|
+
on your system in order to use this commands.
|
39
|
+
|
40
|
+
For other software bundles (including links for the source code packages)
|
41
|
+
consider visiting the official page of the project.
|
42
|
+
|
43
|
+
* http://85.17.184.9/drep
|
44
|
+
|
45
|
+
== Synopsis
|
46
|
+
|
47
|
+
For now, DRep can only be used as a standalone command line application.
|
48
|
+
|
49
|
+
=== Command Line Usage
|
50
|
+
|
51
|
+
The list of command line options can be obtained from the DRep executable with one of the following commands:
|
52
|
+
|
53
|
+
drep -h
|
54
|
+
drep --help
|
55
|
+
|
56
|
+
== Development
|
57
|
+
|
58
|
+
=== Source Repositories
|
59
|
+
|
60
|
+
DRep is currently hosted at RubyForge and GitHub.
|
61
|
+
|
62
|
+
The RubyForge page is
|
63
|
+
* http://rubyforge.org/projects/drep
|
64
|
+
|
65
|
+
The github web page is
|
66
|
+
* http://github.com/tda/drep
|
67
|
+
|
68
|
+
The public git clone URL is
|
69
|
+
* http://github.com/tda/drep.git
|
70
|
+
|
71
|
+
== Additional Information
|
72
|
+
|
73
|
+
Author:: Toksaitov Dmitrii Alexandrovich <toksaitov.d@gmail.com>
|
74
|
+
|
75
|
+
Project web site:: http://85.17.184.9/drep
|
76
|
+
Project forum:: http://groups.google.com/group/drep-system
|
77
|
+
|
78
|
+
== License
|
79
|
+
|
80
|
+
(The GNU General Public License)
|
81
|
+
|
82
|
+
DRep is a simple data collector and report generator.
|
83
|
+
Copyright (C) 2009 Toksaitov Dmitrii Alexandrovich
|
84
|
+
|
85
|
+
This program is free software: you can redistribute it and/or modify
|
86
|
+
it under the terms of the GNU General Public License as published by
|
87
|
+
the Free Software Foundation, either version 3 of the License, or
|
88
|
+
(at your option) any later version.
|
89
|
+
|
90
|
+
This program is distributed in the hope that it will be useful,
|
91
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
92
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
93
|
+
GNU General Public License for more details.
|
data/Rakefile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# DRep - Modular Open Software Tester.
|
2
|
+
# Copyright (C) 2009 Dmitrii Toksaitov
|
3
|
+
#
|
4
|
+
# This file is part of DRep.
|
5
|
+
#
|
6
|
+
# DRep is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
8
|
+
# the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# DRep is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU General Public License
|
17
|
+
# along with DRep. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
require 'rubygems'
|
20
|
+
|
21
|
+
gem 'hoe', '>= 2.1.0'
|
22
|
+
require 'hoe'
|
23
|
+
|
24
|
+
DREP_ROOT = File.expand_path(File.dirname(__FILE__))
|
25
|
+
require File.expand_path(File.join(DREP_ROOT, 'lib', 'drep'))
|
26
|
+
|
27
|
+
Hoe.plugin :newgem
|
28
|
+
|
29
|
+
# Generate all the Rake tasks
|
30
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
31
|
+
$hoe = Hoe.spec DRep::UNIX_NAME do
|
32
|
+
self.developer DRep::AUTHOR, DRep::EMAIL
|
33
|
+
self.version = DRep::VERSION
|
34
|
+
|
35
|
+
self.post_install_message = File.read('PostInstall.txt')
|
36
|
+
self.readme_file = 'README.txt'
|
37
|
+
|
38
|
+
self.extra_deps = [['nokogiri', '>= 1.3.2']]
|
39
|
+
self.extra_dev_deps = [['newgem', '>= 1.5.1']]
|
40
|
+
end
|
41
|
+
|
42
|
+
require 'newgem/tasks'
|
43
|
+
|
44
|
+
Dir[File.join(DREP_ROOT, 'tasks', '**', '*.{rb,task,tasks}')].each do |file| require(file) end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
module DRep
|
5
|
+
|
6
|
+
class Task
|
7
|
+
NAME = 'DRep .*ML Parser'
|
8
|
+
DESCRIPTION = 'Simple HTML/XML values extractor based on Nokogiri and Open-URI libs.'
|
9
|
+
|
10
|
+
attr_reader :env
|
11
|
+
|
12
|
+
def initialize(environment)
|
13
|
+
unless environment.nil?
|
14
|
+
@env = environment
|
15
|
+
else
|
16
|
+
raise(ArgumentError, "Invalid environment", caller())
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def run(specs)
|
21
|
+
result = {}
|
22
|
+
|
23
|
+
sources, rules_list = specs[:sources], specs[:rules]
|
24
|
+
|
25
|
+
raise "Invalid sources list" unless sources.is_a?(Enumerable)
|
26
|
+
raise "Invalid rules list" unless rules_list.is_a?(Enumerable)
|
27
|
+
|
28
|
+
sources.each do |source|
|
29
|
+
doc = load_doc(source)
|
30
|
+
valid doc do
|
31
|
+
rules_list.each do |rules|
|
32
|
+
temp_res = process_rules_sources(doc, rules)
|
33
|
+
result.update(temp_res) unless temp_res.nil?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
return result
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
def load_doc(source)
|
43
|
+
result = nil
|
44
|
+
|
45
|
+
begin
|
46
|
+
msg("Processing source: #{source}")
|
47
|
+
open(source) do |html|
|
48
|
+
result = Nokogiri::HTML(html.read, nil, html.charset)
|
49
|
+
end
|
50
|
+
rescue Exception => e
|
51
|
+
err("Failed to load the source: #{e.message}")
|
52
|
+
end
|
53
|
+
|
54
|
+
return result
|
55
|
+
end
|
56
|
+
|
57
|
+
def process_rules_sources(mldoc, rules)
|
58
|
+
result = nil
|
59
|
+
|
60
|
+
begin
|
61
|
+
msg("Loading rules source: #{rules}")
|
62
|
+
require File.expand_path(rules)
|
63
|
+
|
64
|
+
if defined? Rules.new()
|
65
|
+
msg("Processing rules source: #{rules}")
|
66
|
+
result = process_rules(mldoc, Rules.new(@env).get())
|
67
|
+
else
|
68
|
+
err("The source with rules was not defined in: #{rules}")
|
69
|
+
end
|
70
|
+
rescue Exception => e
|
71
|
+
err("Failed to process source with rules: #{e.message}")
|
72
|
+
end
|
73
|
+
|
74
|
+
return result
|
75
|
+
end
|
76
|
+
|
77
|
+
def process_rules(mldoc, rules)
|
78
|
+
result = {}
|
79
|
+
|
80
|
+
raise "Rules are invalid" unless rules.is_a?(Hash)
|
81
|
+
|
82
|
+
rules.each do |var, rule|
|
83
|
+
temp_res = extract_var(mldoc, rule)
|
84
|
+
|
85
|
+
if valid?(var, temp_res) and not temp_res.empty?
|
86
|
+
msg("Extracted #{var}: #{temp_res.inspect()}") if @env.options.debug
|
87
|
+
result[var] = temp_res
|
88
|
+
else
|
89
|
+
err("Failed to extract #{var.nil? ? 'a variable' : "variable: #{var}"}")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
msg("Number of extracted vars: #{result.size}")
|
94
|
+
|
95
|
+
return result
|
96
|
+
end
|
97
|
+
|
98
|
+
def extract_var(mldoc, rule)
|
99
|
+
result = []
|
100
|
+
|
101
|
+
xpath, str_proc = nil
|
102
|
+
xpath, str_proc = rule[0], rule[1] if rule.is_a?(Array)
|
103
|
+
|
104
|
+
if valid?(xpath, mldoc)
|
105
|
+
mldoc.xpath(xpath).each do |elem|
|
106
|
+
query_res = elem.to_html()
|
107
|
+
result << query_res unless query_res.nil?
|
108
|
+
end
|
109
|
+
if str_proc.is_a?(Proc)
|
110
|
+
begin
|
111
|
+
result = str_proc.call(result)
|
112
|
+
rescue Exception => e
|
113
|
+
err("Rule lambda execution failed: #{e.message}")
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
return result
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
module DRep
|
2
|
+
|
3
|
+
class Rules
|
4
|
+
NAME = 'DRep WA Rules'
|
5
|
+
PROVIDER = 'drep_ml_provider'
|
6
|
+
|
7
|
+
VERSION = '0.0.1'
|
8
|
+
VALID_DATE = '23.07.2009'
|
9
|
+
DESCRIPTION = "Rules for WA section."
|
10
|
+
|
11
|
+
WA_RULES =
|
12
|
+
{
|
13
|
+
:ru_title =>
|
14
|
+
[
|
15
|
+
"//meta[@name='description']/@content",
|
16
|
+
lambda { |strs| /content="(.*)"/.match(first_text(strs))[1] }
|
17
|
+
],
|
18
|
+
:alt_title =>
|
19
|
+
[
|
20
|
+
"//a[@class='estimation']/parent::font/parent::td/text()",
|
21
|
+
lambda { |strs| first_text(strs, /[a-z0-9\(\)\[\]{}\s:]+/i) }
|
22
|
+
],
|
23
|
+
:year =>
|
24
|
+
[
|
25
|
+
"//a[@class='estimation']/parent::font/parent::td/a",
|
26
|
+
lambda { |strs| first_text(strs) }
|
27
|
+
],
|
28
|
+
|
29
|
+
:all_alt_titles =>
|
30
|
+
[
|
31
|
+
"//a[@class='estimation']/parent::font/parent::td/text()",
|
32
|
+
lambda { |strs| strs.strip_tags() }
|
33
|
+
],
|
34
|
+
|
35
|
+
:country =>
|
36
|
+
[
|
37
|
+
"//a[@class='estimation']/parent::font",
|
38
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /������������:.*/).lspart(':') }
|
39
|
+
],
|
40
|
+
:genres =>
|
41
|
+
[
|
42
|
+
"//a[@class='estimation']/parent::font",
|
43
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /����:.*/).lspart(':') }
|
44
|
+
],
|
45
|
+
:type =>
|
46
|
+
[
|
47
|
+
"//a[@class='estimation']/parent::font",
|
48
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /���:.*/).lspart(':') }
|
49
|
+
],
|
50
|
+
:release_date =>
|
51
|
+
[
|
52
|
+
"//a[@class='estimation']/parent::font",
|
53
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /��������:.*/).lspart(':') }
|
54
|
+
],
|
55
|
+
:air_period =>
|
56
|
+
[
|
57
|
+
"//a[@class='estimation']/parent::font",
|
58
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /������:.*/).lspart(':') }
|
59
|
+
],
|
60
|
+
:air_time =>
|
61
|
+
[
|
62
|
+
"//a[@class='estimation']/parent::font",
|
63
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /������ �.*/).lspart('�') }
|
64
|
+
],
|
65
|
+
:director =>
|
66
|
+
[
|
67
|
+
"//a[@class='estimation']/parent::font",
|
68
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /�������:.*/).lspart(':') }
|
69
|
+
],
|
70
|
+
:screenwriter =>
|
71
|
+
[
|
72
|
+
"//a[@class='estimation']/parent::font",
|
73
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /��������:.*/).lspart(':') }
|
74
|
+
],
|
75
|
+
:original_work_author=>
|
76
|
+
[
|
77
|
+
"//a[@class='estimation']/parent::font",
|
78
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /����� ���������:.*/).lspart(':') }
|
79
|
+
],
|
80
|
+
:original_work =>
|
81
|
+
[
|
82
|
+
"//a[@class='estimation']/parent::font",
|
83
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /����� ��.*/).rspart(':') }
|
84
|
+
],
|
85
|
+
:original_work_name =>
|
86
|
+
[
|
87
|
+
"//a[@class='estimation']/parent::font",
|
88
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /����� ��.*/).lspart(':') }
|
89
|
+
],
|
90
|
+
|
91
|
+
:raiting_avg_score =>
|
92
|
+
[
|
93
|
+
"//a[@class='estimation']/parent::font",
|
94
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /������� ����:.*/).lspart(':') }
|
95
|
+
],
|
96
|
+
|
97
|
+
:raiting_pos =>
|
98
|
+
[
|
99
|
+
"//a[@class='estimation']/parent::font",
|
100
|
+
lambda { |strs| first_text(first_text(strs).split("\n"), /����� � ��������:.*/).lspart(':') }
|
101
|
+
],
|
102
|
+
:votes_num =>
|
103
|
+
[
|
104
|
+
"//a[@class='estimation']/parent::font",
|
105
|
+
lambda { |strs|
|
106
|
+
first_text(first_text(strs).split("\n"), /�������������:.*/).lspart(':').gsub(/\[.+\]/, '')
|
107
|
+
}
|
108
|
+
],
|
109
|
+
|
110
|
+
:brief_content =>
|
111
|
+
[
|
112
|
+
"//p[@class='review']",
|
113
|
+
lambda { |strs| first_text(strs) }
|
114
|
+
],
|
115
|
+
|
116
|
+
:logical_view_order =>
|
117
|
+
[
|
118
|
+
"//table[descendant::*[@background='img/pixel.gif']]/following-sibling::table[1]",
|
119
|
+
lambda { |strs| first_text(strs, /(\s*#\d+[^#]*)+/).gsub(/(#\d+)/, "\n\\1").safe_strip() }
|
120
|
+
],
|
121
|
+
:episodes =>
|
122
|
+
[
|
123
|
+
"//table[descendant::*[@background='img/pixel.gif']]/following-sibling::table[1]",
|
124
|
+
lambda { |strs| first_text(strs, /(\d+[\d\s\[\]\(\)]*\.).*/m) }
|
125
|
+
],
|
126
|
+
|
127
|
+
:all_general_info =>
|
128
|
+
[
|
129
|
+
"//a[@class='estimation']/parent::font",
|
130
|
+
lambda { |strs| first_text(strs).sub('������ �', '������ �:') }
|
131
|
+
]
|
132
|
+
}
|
133
|
+
|
134
|
+
attr_reader :env
|
135
|
+
|
136
|
+
def initialize(environment)
|
137
|
+
unless environment.nil?
|
138
|
+
@env = environment
|
139
|
+
else
|
140
|
+
raise(ArgumentError, "Invalid environment", caller())
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def get()
|
145
|
+
msg("Rules are predefined. Number of rules: #{WA_RULES.size}")
|
146
|
+
|
147
|
+
return WA_RULES
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
<%# Simple WA to BBCode template %>
|
2
|
+
<%# Version: 0.0.1 %>
|
3
|
+
<%# Date: 22.07.2009 %>
|
4
|
+
<%# Type: BBCode %>
|
5
|
+
<%# Language: Russian %>
|
6
|
+
<%# --------------------------------------------------------------------------------- %>
|
7
|
+
<%# Board Title %>
|
8
|
+
<%= @ru_title %> / <%= @alt_title %>, (<%= @year %>) [<%= @genres %>] ToDo:RipType {ToDo:SubsInfo}
|
9
|
+
<%# Topic Title %>
|
10
|
+
[font="Tahoma"][size=20][b]<%= @ru_title %> [color=#AAAAAA]/[/color] <%= @alt_title %> [[color=<%= @year.to_i() == Time.now.year ? "darkred" : "darkblue" %>]<%= @year %>[/color]][/b][/size][/font]
|
11
|
+
|
12
|
+
<%# Cover %>
|
13
|
+
[img]<%= first_valid(@main_cover, 'ToDo') %>[/img]
|
14
|
+
|
15
|
+
<%# Other possible titles %>
|
16
|
+
<% @all_alt_titles.each do |title| %>
|
17
|
+
<%= title %>
|
18
|
+
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
<%# General information %>
|
22
|
+
<% valid(@country) do %>
|
23
|
+
[b]������������:[/b] <%= @country %>
|
24
|
+
<% end %>
|
25
|
+
<% valid(@genres) do %>
|
26
|
+
[b]�����:[/b] <%= @genres %>
|
27
|
+
<% end %>
|
28
|
+
<% valid(@type) do %>
|
29
|
+
[b]���:[/b] <%= @type %>
|
30
|
+
<% end %>
|
31
|
+
<% valid(@release_date) do %>
|
32
|
+
[b]��������:[/b] <%= @release_date %>
|
33
|
+
<% end %>
|
34
|
+
<% valid(@air_period) do %>
|
35
|
+
[b]������:[/b] <%= @air_period %>
|
36
|
+
<% end %>
|
37
|
+
<% valid(@air_time) do %>
|
38
|
+
[b]������ �:[/b] <%= @air_time %>
|
39
|
+
<% end %>
|
40
|
+
|
41
|
+
<% valid(@director) do %>
|
42
|
+
[b]�������:[/b] <%= @director %>
|
43
|
+
<% end %>
|
44
|
+
<% valid(@screenwriter) do %>
|
45
|
+
[b]��������:[/b] <%= @screenwriter %>
|
46
|
+
<% end %>
|
47
|
+
<% valid(@original_work_author) do %>
|
48
|
+
[b]����� ���������:[/b] <%= @original_work_author %>
|
49
|
+
<% end %>
|
50
|
+
|
51
|
+
<% valid(@original_work, @original_work_name) do %>
|
52
|
+
[b]<%= @original_work %>:[/b] <%= @original_work_name %>
|
53
|
+
<% end %>
|
54
|
+
|
55
|
+
<%# Studio Logotype %>
|
56
|
+
[img]<%= first_valid(@studio_logo, 'ToDo') %>[/img]
|
57
|
+
|
58
|
+
<%# Rating information %>
|
59
|
+
������� �� ����� [i]<%= @site_name %>[/i]:
|
60
|
+
|
61
|
+
[tab][b]������� ����:[/b] <%= first_valid(@raiting_avg_score, '---') %>
|
62
|
+
[tab][b]����� � ��������:[/b] <%= first_valid(@raiting_pos, '---') %>
|
63
|
+
[tab][b]�������������:[/b] <%= first_valid(@votes_num, '---') %>
|
64
|
+
|
65
|
+
[tab][size=10]���������� � �������� �� [i]<%= Time.now.strftime('%d.%m.%Y') %>[/i][/size]
|
66
|
+
[hr]
|
67
|
+
|
68
|
+
<%# Content and other stuff %>
|
69
|
+
[quote]
|
70
|
+
[b]����������:[/b]
|
71
|
+
|
72
|
+
[align=justify]<%= first_valid(@brief_content, 'ToDo') %>[/align]
|
73
|
+
<% valid(@logical_view_order) do %>
|
74
|
+
[hr]
|
75
|
+
[b]������� ��������� ���� �����: [/b]
|
76
|
+
|
77
|
+
<%= @logical_view_order.gsub(/(^#\d+)/, '[tab][b]\1[/b]') %>
|
78
|
+
|
79
|
+
<% end %>
|
80
|
+
[/quote]
|
81
|
+
<%# Episodes %>
|
82
|
+
<% valid(@episodes) do %>
|
83
|
+
[hr]
|
84
|
+
[spoiler="�������:"]
|
85
|
+
<%= @episodes.gsub(/(^\d+[\d\s\[\]\(\)]*\.)/, '[tab][b]\1[/b]') %>
|
86
|
+
|
87
|
+
[/spoiler]
|
88
|
+
<% end %>
|
89
|
+
[hr]
|
90
|
+
<%# Screenshots %>
|
91
|
+
[quote]
|
92
|
+
[img]<%= first_valid(@main_screenshot, 'ToDo') %>[/img]
|
93
|
+
[hr]
|
94
|
+
[spoiler="��� ��������� � ������������ �������:"]
|
95
|
+
[img]<%= first_valid(@first_additional_screenshot, 'ToDo') %>[/img]
|
96
|
+
[img]<%= first_valid(@second_additional_screenshot, 'ToDo') %>[/img]
|
97
|
+
[img]<%= first_valid(@third_additional_screenshot, 'ToDo') %>[/img]
|
98
|
+
[/spoiler]
|
99
|
+
[/quote]
|
100
|
+
[hr]
|
101
|
+
<%# File specs %>
|
102
|
+
[quote]
|
103
|
+
ToDo
|
104
|
+
[/quote]
|
105
|
+
[hr]
|
106
|
+
<%# Custom stuff %>
|
107
|
+
[b]������ ������:[/b] [i]---[/i]
|
108
|
+
[b]��������:[/b] [i]ToDo[/i]
|
109
|
+
[hr]
|
110
|
+
[color=gray]This page was generated by [b]DangoRep[/b][/color]
|
data/bin/drep
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# DRep - Modular Open Software Tester.
|
4
|
+
# Copyright (C) 2009 Dmitrii Toksaitov
|
5
|
+
#
|
6
|
+
# This file is part of DRep.
|
7
|
+
#
|
8
|
+
# DRep is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# DRep is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with DRep. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
|
21
|
+
require 'rubygems'
|
22
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/drep')
|
23
|
+
|
24
|
+
DRep::EXEC.new(STDIN, STDOUT, STDERR, ARGV).run()
|