indexer 0.3.0 → 0.3.1
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.
- checksums.yaml +7 -0
- data/.index +6 -14
- data/lib/indexer.rb +1 -1
- data/lib/indexer/importer.rb +10 -4
- data/lib/indexer/loadable.rb +3 -3
- metadata +13 -80
- data/lib/indexer/importer/html.rb +0 -294
- data/lib/indexer/importer/markdown.rb +0 -63
- data/lib/indexer/webui.rb +0 -167
- data/lib/indexer/webui/assets/dotruby_binding.js +0 -41
- data/lib/indexer/webui/assets/dotruby_model.js +0 -203
- data/lib/indexer/webui/assets/jquery-1.4.2.min.js +0 -154
- data/lib/indexer/webui/assets/json2.js +0 -482
- data/lib/indexer/webui/assets/knockout-2.0.0.js +0 -97
- data/lib/indexer/webui/assets/testdata.json +0 -23
- data/lib/indexer/webui/assets/underscore-min.js +0 -31
- data/lib/indexer/webui/index-old.html +0 -92
- data/lib/indexer/webui/index.html +0 -286
@@ -1,63 +0,0 @@
|
|
1
|
-
module Indexer
|
2
|
-
|
3
|
-
class Importer
|
4
|
-
|
5
|
-
# Import metadata from a markdown source.
|
6
|
-
#
|
7
|
-
module MarkdownImportation
|
8
|
-
|
9
|
-
#
|
10
|
-
# Markdown import procedure.
|
11
|
-
#
|
12
|
-
def import(source)
|
13
|
-
if File.file?(source)
|
14
|
-
case File.extname(source)
|
15
|
-
when '.md', '.markdown'
|
16
|
-
load_markdown(source)
|
17
|
-
return true
|
18
|
-
end
|
19
|
-
end
|
20
|
-
super(source) if defined?(super)
|
21
|
-
end
|
22
|
-
|
23
|
-
#
|
24
|
-
# Import metadata from HTML file.
|
25
|
-
#
|
26
|
-
def load_markdown(file)
|
27
|
-
require 'nokogiri'
|
28
|
-
|
29
|
-
text = File.read(file)
|
30
|
-
|
31
|
-
begin
|
32
|
-
require 'redcarpet'
|
33
|
-
html = render_with_redcarpet(text)
|
34
|
-
rescue LoadError
|
35
|
-
require 'kramdown'
|
36
|
-
html = render_with_kramdown(text)
|
37
|
-
end
|
38
|
-
|
39
|
-
doc = Nokogiri::HTML(html)
|
40
|
-
|
41
|
-
load_html(doc)
|
42
|
-
end
|
43
|
-
|
44
|
-
#
|
45
|
-
def render_with_redcarpet(text)
|
46
|
-
renderer = Redcarpet::Render::HTML.new()
|
47
|
-
markdown = Redcarpet::Markdown.new(renderer, :autolink=>true, :tables=>true, :space_after_headers=>true)
|
48
|
-
markdown.render(text)
|
49
|
-
end
|
50
|
-
|
51
|
-
#
|
52
|
-
def render_with_kramdown(text)
|
53
|
-
Kramdown::Document.new(text).to_html
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
# Include mixin into Importer class.
|
59
|
-
include MarkdownImportation
|
60
|
-
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
data/lib/indexer/webui.rb
DELETED
@@ -1,167 +0,0 @@
|
|
1
|
-
#require 'fileutils'
|
2
|
-
#require 'tmpdir'
|
3
|
-
require 'optparse'
|
4
|
-
require 'json'
|
5
|
-
|
6
|
-
require 'rack'
|
7
|
-
require 'rack/server'
|
8
|
-
require 'rack/handler'
|
9
|
-
require 'rack/builder'
|
10
|
-
require 'rack/directory'
|
11
|
-
require 'rack/file'
|
12
|
-
|
13
|
-
module Indexer
|
14
|
-
|
15
|
-
module WebUI
|
16
|
-
|
17
|
-
# Server is a Rack-based server that simply serves up the editing page.
|
18
|
-
#
|
19
|
-
class Server
|
20
|
-
|
21
|
-
ROOT = File.join(File.dirname(__FILE__), 'webui')
|
22
|
-
|
23
|
-
# Rack configuration file.
|
24
|
-
#RACK_FILE = 'brite.ru'
|
25
|
-
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
def self.start(argv)
|
30
|
-
new(argv).start
|
31
|
-
end
|
32
|
-
|
33
|
-
#
|
34
|
-
# Server options, parsed from command line.
|
35
|
-
#
|
36
|
-
attr :options
|
37
|
-
|
38
|
-
#
|
39
|
-
# Setup new instance of Brite::Server.
|
40
|
-
#
|
41
|
-
def initialize(argv)
|
42
|
-
@options = ::Rack::Server::Options.new.parse!(argv)
|
43
|
-
|
44
|
-
@root = argv.first || Dir.pwd
|
45
|
-
|
46
|
-
@options[:app] = app
|
47
|
-
#@options[:pid] = "#{tmp_dir}/pids/server.pid"
|
48
|
-
|
49
|
-
@options[:Port] ||= '4444'
|
50
|
-
end
|
51
|
-
|
52
|
-
# THINK: Should we be using a local tmp directory instead?
|
53
|
-
# Then again, why do we need them at all, really?
|
54
|
-
|
55
|
-
#
|
56
|
-
# Temporary directory used by the rack server.
|
57
|
-
#
|
58
|
-
def tmp_dir
|
59
|
-
@tmp_dir ||= File.join(Dir.tmpdir, 'indexer', root)
|
60
|
-
end
|
61
|
-
|
62
|
-
#
|
63
|
-
# Start the server.
|
64
|
-
#
|
65
|
-
def start
|
66
|
-
# ensure_site
|
67
|
-
|
68
|
-
# create required tmp directories if not found
|
69
|
-
# %w(cache pids sessions sockets).each do |dir_to_make|
|
70
|
-
# FileUtils.mkdir_p(File.join(tmp_dir, dir_to_make))
|
71
|
-
# end
|
72
|
-
|
73
|
-
::Rack::Server.start(options)
|
74
|
-
end
|
75
|
-
|
76
|
-
# # Ensure root is a Brite Site.
|
77
|
-
# def ensure_site
|
78
|
-
# return true if File.exist?(rack_file)
|
79
|
-
# #return true if config.file
|
80
|
-
# abort "Where's the site?"
|
81
|
-
# end
|
82
|
-
|
83
|
-
# # Load Brite configuration.
|
84
|
-
# def config
|
85
|
-
# @config ||= Brite::Config.new(root)
|
86
|
-
# end
|
87
|
-
|
88
|
-
#
|
89
|
-
# Site root directory.
|
90
|
-
#
|
91
|
-
def root
|
92
|
-
ROOT
|
93
|
-
end
|
94
|
-
|
95
|
-
# Configuration file for server.
|
96
|
-
#def rack_file
|
97
|
-
# RACK_FILE
|
98
|
-
#end
|
99
|
-
|
100
|
-
#
|
101
|
-
# If the site has a `brite.ru` file, that will be used to start the server,
|
102
|
-
# otherwise a standard Rack::Directory server ise used.
|
103
|
-
#
|
104
|
-
def app
|
105
|
-
@app ||= (
|
106
|
-
#if ::File.exist?(rack_file)
|
107
|
-
# app, options = Rack::Builder.parse_file(rack_file, opt_parser)
|
108
|
-
# @options.merge!(options)
|
109
|
-
# app
|
110
|
-
#else
|
111
|
-
root = self.root
|
112
|
-
json = index_json
|
113
|
-
|
114
|
-
Rack::Builder.new do
|
115
|
-
use IndexHTML, root
|
116
|
-
map '/index' do
|
117
|
-
run Proc.new{ |env| [200, {"Content-Type" => "text/json"}, [json]] }
|
118
|
-
end
|
119
|
-
run Rack::Directory.new("#{root}")
|
120
|
-
end
|
121
|
-
#end
|
122
|
-
)
|
123
|
-
end
|
124
|
-
|
125
|
-
#
|
126
|
-
#
|
127
|
-
#
|
128
|
-
def index_json
|
129
|
-
YAML.load_file('.index').to_json
|
130
|
-
end
|
131
|
-
|
132
|
-
# Rack middleware to serve `index.html` file by default.
|
133
|
-
#
|
134
|
-
class IndexHTML
|
135
|
-
def initialize(app, root)
|
136
|
-
@app = app
|
137
|
-
@root = root || Dir.pwd
|
138
|
-
end
|
139
|
-
|
140
|
-
def call(env)
|
141
|
-
path = Rack::Utils.unescape(env['PATH_INFO'])
|
142
|
-
index_file = File.join(@root, path, 'index.html')
|
143
|
-
if File.exists?(index_file)
|
144
|
-
[200, {'Content-Type' => 'text/html'}, File.new(index_file)]
|
145
|
-
else
|
146
|
-
@app.call(env) #Rack::Directory.new(@root).call(env)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
#
|
152
|
-
#def log_path
|
153
|
-
# "_brite.log"
|
154
|
-
#end
|
155
|
-
|
156
|
-
#
|
157
|
-
#def middleware
|
158
|
-
# middlewares = []
|
159
|
-
# #middlewares << [Rails::Rack::LogTailer, log_path] unless options[:daemonize]
|
160
|
-
# #middlewares << [Rails::Rack::Debugger] if options[:debugger]
|
161
|
-
# Hash.new(middlewares)
|
162
|
-
#end
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|
166
|
-
|
167
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
|
2
|
-
// Remove list items.
|
3
|
-
$('body').delegate(".remove", "click", function() {
|
4
|
-
var list = $(this).attr('list');
|
5
|
-
|
6
|
-
//retrieve the context
|
7
|
-
var context = ko.contextFor(this);
|
8
|
-
var parentArray = context.$parent[list];
|
9
|
-
|
10
|
-
//remove the data (context.$data) from the appropriate array on its parent (context.$parent)
|
11
|
-
parentArray.remove(context.$data);
|
12
|
-
|
13
|
-
return false;
|
14
|
-
});
|
15
|
-
|
16
|
-
// Add list items.
|
17
|
-
$('body').delegate(".insert", "click", function() {
|
18
|
-
var list = $(this).attr('list');
|
19
|
-
|
20
|
-
//retrieve the context
|
21
|
-
var context = ko.contextFor(this);
|
22
|
-
|
23
|
-
var newItem = prompt("Enter new entry for " + list + ': ');
|
24
|
-
|
25
|
-
if (newItem != '' && newItem != null) {
|
26
|
-
context.$data[list].push(newItem);
|
27
|
-
};
|
28
|
-
|
29
|
-
return false;
|
30
|
-
});
|
31
|
-
|
32
|
-
//function save() {
|
33
|
-
// $(). ko.toJSON(DotRubyViewModel);
|
34
|
-
//}
|
35
|
-
|
36
|
-
function save() {
|
37
|
-
//var json = ko.toJSON(dotrubyInstance);
|
38
|
-
var json = JSON.stringify( ko.toJS(dotrubyInstance), null, 2 );
|
39
|
-
$('#lastSavedJson').val(json);
|
40
|
-
};
|
41
|
-
|
@@ -1,203 +0,0 @@
|
|
1
|
-
DotRuby = {
|
2
|
-
|
3
|
-
viewModel: function(data) {
|
4
|
-
var self = this;
|
5
|
-
var data = DotRuby.prepareData(data);
|
6
|
-
|
7
|
-
self.name = ko.observable(data.name);
|
8
|
-
self.title = ko.observable(data.title);
|
9
|
-
self.version = ko.observable(data.version);
|
10
|
-
self.codename = ko.observable(data.codename);
|
11
|
-
self.summary = ko.observable(data.summary);
|
12
|
-
self.description = ko.observable(data.description);
|
13
|
-
self.created = ko.observable(data.created);
|
14
|
-
self.date = ko.observable(data.date);
|
15
|
-
self.organization = ko.observable(data.organization);
|
16
|
-
self.suite = ko.observable(data.suite);
|
17
|
-
self.install_message = ko.observable(data.install_message);
|
18
|
-
|
19
|
-
self.authors = ko.observableArray(data.authors);
|
20
|
-
self.repositories = ko.observableArray(data.repositories);
|
21
|
-
self.requirements = ko.observableArray(data.requirements);
|
22
|
-
self.dependencies = ko.observableArray(data.dependencies);
|
23
|
-
self.conflicts = ko.observableArray(data.conflicts);
|
24
|
-
self.alternatives = ko.observableArray(data.alternatives);
|
25
|
-
self.resources = ko.observableArray(data.resources);
|
26
|
-
self.copyrights = ko.observableArray(data.copyrights);
|
27
|
-
self.load_path = ko.observableArray(data.load_path);
|
28
|
-
|
29
|
-
self.addResource = function(){
|
30
|
-
this.resources.push(new DotRuby.resourceModel( {label: '', uri: ''} ));
|
31
|
-
};
|
32
|
-
|
33
|
-
self.addRepository = function(){
|
34
|
-
this.repositories.push(new DotRuby.repositoryModel( {label: '', uri: '', scm: ''} ));
|
35
|
-
};
|
36
|
-
|
37
|
-
self.addRequirement = function(){
|
38
|
-
this.requirements.push(new DotRuby.requirementModel( {name: '', version: '', development: false, groups: [], engines: [], platforms: []} ));
|
39
|
-
};
|
40
|
-
|
41
|
-
self.addDependency = function(){
|
42
|
-
this.dependencies.push(new DotRuby.dependencyModel( {name: '', version: '', development: false, groups: [], engines: [], platforms: []} ));
|
43
|
-
};
|
44
|
-
|
45
|
-
self.addCopyright = function(){
|
46
|
-
this.copyrights.push(new DotRuby.copyrightModel( {holder: '', year: '', license: ''} ));
|
47
|
-
};
|
48
|
-
|
49
|
-
self.addAuthor = function(){
|
50
|
-
this.authors.push(new DotRuby.authorModel( {name: '', email: '', website: ''} ));
|
51
|
-
};
|
52
|
-
|
53
|
-
self.addAlternative = function(){
|
54
|
-
this.alternatives.push('');
|
55
|
-
};
|
56
|
-
|
57
|
-
self.addConflict = function(){
|
58
|
-
this.conflicts.push('');
|
59
|
-
};
|
60
|
-
|
61
|
-
self.addLoadpath = function(){
|
62
|
-
this.load_path.push('');
|
63
|
-
};
|
64
|
-
|
65
|
-
self.json = function(){
|
66
|
-
// @todo Convert resources back to mapping
|
67
|
-
ko.toJSON(this)
|
68
|
-
};
|
69
|
-
},
|
70
|
-
|
71
|
-
authorModel: function(data) {
|
72
|
-
var self = this;
|
73
|
-
self.name = ko.observable(data.name);
|
74
|
-
self.email = ko.observable(data.email);
|
75
|
-
self.website = ko.observable(data.website);
|
76
|
-
self.roles = ko.observableArray(data.roles);
|
77
|
-
},
|
78
|
-
|
79
|
-
repositoryModel: function(data) {
|
80
|
-
var self = this;
|
81
|
-
self.label = ko.observable(data.label);
|
82
|
-
self.uri = ko.observable(data.uri);
|
83
|
-
self.scm = ko.observable(data.scm);
|
84
|
-
},
|
85
|
-
|
86
|
-
requirementModel: function(data) {
|
87
|
-
var self = this;
|
88
|
-
self.name = ko.observable(data.name);
|
89
|
-
self.version = ko.observable(data.version);
|
90
|
-
self.groups = ko.observableArray(makeArray(data.groups));
|
91
|
-
self.platforms = ko.observableArray(makeArray(data.platforms));
|
92
|
-
self.engines = ko.observableArray(makeArray(data.engines));
|
93
|
-
self.development = ko.observable(data.development);
|
94
|
-
self.repository = ko.observable(data.repository);
|
95
|
-
},
|
96
|
-
|
97
|
-
dependencyModel: function(data) {
|
98
|
-
var self = this;
|
99
|
-
self.name = ko.observable(data.name);
|
100
|
-
self.version = ko.observable(data.version);
|
101
|
-
self.groups = ko.observableArray(makeArray(data.groups));
|
102
|
-
self.engines = ko.observableArray(makeArray(data.engines));
|
103
|
-
self.platforms = ko.observableArray(makeArray(data.platforms));
|
104
|
-
self.development = ko.observable(data.development);
|
105
|
-
self.repository = ko.observable(data.repository);
|
106
|
-
},
|
107
|
-
|
108
|
-
resourceModel: function(data) {
|
109
|
-
var self = this;
|
110
|
-
self.label = ko.observable(data.label);
|
111
|
-
self.uri = ko.observable(data.uri);
|
112
|
-
},
|
113
|
-
|
114
|
-
copyrightModel: function(data) {
|
115
|
-
var self = this;
|
116
|
-
self.holder = ko.observable(data.holder);
|
117
|
-
self.year = ko.observable(data.year);
|
118
|
-
self.license = ko.observable(data.license);
|
119
|
-
},
|
120
|
-
|
121
|
-
// take raw hash and convert elements to models
|
122
|
-
// also ensure all fields are accounted for
|
123
|
-
prepareData: function(data) {
|
124
|
-
newData = {
|
125
|
-
name: '',
|
126
|
-
version: '0.0.0',
|
127
|
-
date: '',
|
128
|
-
title: '',
|
129
|
-
organization: '',
|
130
|
-
summary: '',
|
131
|
-
description: '',
|
132
|
-
requirements: [],
|
133
|
-
dependencies: [],
|
134
|
-
alternatives: [],
|
135
|
-
repositories: [],
|
136
|
-
resources: [],
|
137
|
-
authors: [],
|
138
|
-
copyrights: []
|
139
|
-
};
|
140
|
-
|
141
|
-
_.each(data, function(val, key){
|
142
|
-
newData[key] = val;
|
143
|
-
});
|
144
|
-
|
145
|
-
newData.resources = _.map(data.resources, function(v,k){
|
146
|
-
return(new DotRuby.resourceModel({'label': k, 'uri': v}));
|
147
|
-
});
|
148
|
-
|
149
|
-
newData.requirements = _.map(data.requirements, function(a){
|
150
|
-
return(new DotRuby.requirementModel(a));
|
151
|
-
});
|
152
|
-
|
153
|
-
newData.dependencies = _.map(data.dependencies, function(a){
|
154
|
-
return(new DotRuby.dependencyModel(a));
|
155
|
-
});
|
156
|
-
|
157
|
-
newData.repositories = _.map(data.repositories, function(x){
|
158
|
-
return(new DotRuby.repositoryModel(x));
|
159
|
-
});
|
160
|
-
|
161
|
-
newData.authors = _.map(data.authors, function(x){
|
162
|
-
return(new DotRuby.authorModel(x));
|
163
|
-
});
|
164
|
-
|
165
|
-
newData.copyrights = _.map(data.copyrights, function(x){
|
166
|
-
return(new DotRuby.copyrightModel(x));
|
167
|
-
});
|
168
|
-
|
169
|
-
//newData.conflicts = _.map(data.conflicts, function(x){
|
170
|
-
// return(new DotRuby.confictModel(x));
|
171
|
-
//});
|
172
|
-
|
173
|
-
//newData.alternatives = _.map(data.alternatives, function(x){
|
174
|
-
// return(new DotRuby.copyrightModel(x));
|
175
|
-
//});
|
176
|
-
|
177
|
-
return newData;
|
178
|
-
},
|
179
|
-
|
180
|
-
};
|
181
|
-
|
182
|
-
//DotRuby.resourceModel.create = function(){
|
183
|
-
// return( new DotRuby.resourceModel({label: '', uri: ''}) );
|
184
|
-
//};
|
185
|
-
|
186
|
-
// support functions
|
187
|
-
|
188
|
-
function makeArray(value){
|
189
|
-
if (typeof(value) == Array) {
|
190
|
-
return value;
|
191
|
-
} else {
|
192
|
-
return _.compact([value]);
|
193
|
-
}
|
194
|
-
};
|
195
|
-
|
196
|
-
function makeString(value){
|
197
|
-
if (typeof(value) == String) {
|
198
|
-
return value;
|
199
|
-
} else {
|
200
|
-
return '' + value;
|
201
|
-
}
|
202
|
-
};
|
203
|
-
|