tdiary-contrib 4.0.2.1 → 4.0.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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +16 -12
- data/lib/extensions/contrib.rb +16 -0
- data/lib/tdiary-contrib.rb +2 -12
- data/lib/tdiary/contrib/version.rb +2 -2
- data/plugin/coderay.rb +74 -0
- data/plugin/image_ex.rb +15 -17
- data/plugin/makerss_category.rb +2 -2
- data/plugin/makerss_comment.rb +2 -2
- data/plugin/nhk_program_info.rb +104 -0
- data/plugin/profile.rb +4 -19
- data/plugin/search-bing.rb +10 -6
- data/spec/apple_webclip_spec.rb +3 -3
- data/spec/gist_spec.rb +1 -1
- data/spec/github_link_spec.rb +4 -4
- data/spec/google_analytics_spec.rb +3 -3
- data/spec/jdate_spec.rb +1 -1
- data/spec/jmonth_spec.rb +1 -1
- data/spec/jyear_spec.rb +1 -1
- data/spec/my_hotentry_spec.rb +8 -8
- data/spec/openid_spec.rb +34 -34
- data/spec/opensearch_ad_spec.rb +5 -5
- data/spec/profile_spec.rb +15 -15
- data/spec/title_anchor_spec.rb +4 -4
- data/spec/twitter_js_spec.rb +8 -8
- data/spec/youtube_spec.rb +1 -1
- data/tdiary-contrib.gemspec +1 -2
- data/util/image-gallery/misc/plugin/recent_image.rb +2 -2
- metadata +8 -9
- data/plugin/search-default.rb +0 -269
- data/util/tdiarysearch/README.en +0 -53
- data/util/tdiarysearch/README.ja +0 -99
- data/util/tdiarysearch/search.rb +0 -504
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b93a4e4a623dc81cccbe122dcecd09f37adf408b
|
4
|
+
data.tar.gz: ebed4176090ce9d2046b34b9273aa3e85d873d4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9986ae7afd37e0605113b81b641a5e5e0dbc52c01b971e9e54d42fdca9655f9305f31927be6d9be2b7df869642964d0b46181d8f01f75477df11682669fb0d91
|
7
|
+
data.tar.gz: 2eecb6b945e59647fa851234ec610c0febf7e7ef4a2342bc2165014c75acc6fd8c2b11988a271c4cc1edd961725723f1d381140ffe4c36b41d067f54b67620fc
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,19 +2,23 @@ GEM
|
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
4
|
diff-lcs (1.2.5)
|
5
|
-
docile (1.1.
|
5
|
+
docile (1.1.3)
|
6
6
|
json (1.8.1)
|
7
|
-
multi_json (1.8.
|
8
|
-
rake (10.1.
|
7
|
+
multi_json (1.8.4)
|
8
|
+
rake (10.1.1)
|
9
9
|
rcov (1.0.0)
|
10
|
-
rspec (
|
11
|
-
rspec-core (
|
12
|
-
rspec-expectations (
|
13
|
-
rspec-mocks (
|
14
|
-
rspec-core (
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
rspec (3.0.0.beta2)
|
11
|
+
rspec-core (= 3.0.0.beta2)
|
12
|
+
rspec-expectations (= 3.0.0.beta2)
|
13
|
+
rspec-mocks (= 3.0.0.beta2)
|
14
|
+
rspec-core (3.0.0.beta2)
|
15
|
+
rspec-support (= 3.0.0.beta2)
|
16
|
+
rspec-expectations (3.0.0.beta2)
|
17
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
+
rspec-support (= 3.0.0.beta2)
|
19
|
+
rspec-mocks (3.0.0.beta2)
|
20
|
+
rspec-support (= 3.0.0.beta2)
|
21
|
+
rspec-support (3.0.0.beta2)
|
18
22
|
simplecov (0.8.2)
|
19
23
|
docile (~> 1.1.0)
|
20
24
|
multi_json
|
@@ -32,6 +36,6 @@ DEPENDENCIES
|
|
32
36
|
json
|
33
37
|
rake
|
34
38
|
rcov
|
35
|
-
rspec
|
39
|
+
rspec (~> 3.0.0.beta2)
|
36
40
|
simplecov
|
37
41
|
tdiary (= 4.0.2)
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'tdiary/extensions'
|
3
|
+
|
4
|
+
module TDiary
|
5
|
+
module Extensions
|
6
|
+
class Contrib
|
7
|
+
def self.sp_path
|
8
|
+
File.join(TDiary::Contrib.root, 'plugin')
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.assets_path
|
12
|
+
File.join(TDiary::Contrib.root, 'js')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/tdiary-contrib.rb
CHANGED
@@ -1,20 +1,10 @@
|
|
1
|
-
|
2
|
-
require '
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'extensions/contrib'
|
3
3
|
|
4
4
|
module TDiary
|
5
5
|
class Contrib
|
6
6
|
def self.root
|
7
7
|
File.expand_path('../..', __FILE__)
|
8
8
|
end
|
9
|
-
|
10
|
-
class Plugin
|
11
|
-
def self.setup(sp_path)
|
12
|
-
sp_path << File.join(TDiary::Contrib.root, 'plugin')
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
Application.configure do
|
18
|
-
config.assets_paths << File.join(TDiary::Contrib.root, 'js')
|
19
9
|
end
|
20
10
|
end
|
data/plugin/coderay.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# coderay.rb - easy syntax highlighting for selected languages
|
4
|
+
# refer to the URL below.
|
5
|
+
# http://coderay.rubychan.de/
|
6
|
+
#
|
7
|
+
# Copyright (C) 2013, tamoot <tamoot+tdiary@gmail.com>
|
8
|
+
# You can redistribute it and/or modify it under GPL2.
|
9
|
+
#
|
10
|
+
|
11
|
+
require 'cgi'
|
12
|
+
require 'erb'
|
13
|
+
require 'coderay'
|
14
|
+
|
15
|
+
@coderay_default_css ||= ::CodeRay::Encoders[:html]::CSS.new(:default).stylesheet
|
16
|
+
|
17
|
+
def coderay(lang, text, options = {})
|
18
|
+
html = ::CodeRay.scan(text, lang).html(:line_numbers => :inline, :bold_every => false, :line_number_anchors => false)
|
19
|
+
%Q|<div class="CodeRay"><pre>#{html}</pre></div>|
|
20
|
+
end
|
21
|
+
|
22
|
+
add_header_proc do
|
23
|
+
coderay_css = ''
|
24
|
+
if @conf['coderay.css.url'] && @conf['coderay.css.url'].size > 0
|
25
|
+
coderay_css = %Q|<link rel="stylesheet" href="#{h @conf['coderay.css.url']}" type="text/css" media="all">|
|
26
|
+
else
|
27
|
+
coderay_css = <<-STYLE
|
28
|
+
<style type="text/css"><!--
|
29
|
+
#{@coderay_default_css}
|
30
|
+
-->
|
31
|
+
</style>
|
32
|
+
STYLE
|
33
|
+
end
|
34
|
+
|
35
|
+
coderay_css
|
36
|
+
end
|
37
|
+
|
38
|
+
add_conf_proc( 'coderay', 'CodeRay' ) do
|
39
|
+
if @mode == 'saveconf' then
|
40
|
+
@conf['coderay.css.url'] = @cgi.params['coderay.css.url'][0]
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
coderay_conf = <<-HTML
|
45
|
+
<h3 class="subtitle">custom style</h3>
|
46
|
+
|
47
|
+
<p>The stylesheet path is used instead of CodeRay default. </p>
|
48
|
+
<p>Path: <input name="coderay.css.url" value="#{h @conf['coderay.css.url']}" size="70"></p>
|
49
|
+
<pre>
|
50
|
+
sample:
|
51
|
+
#{CGI::escape_html('<link rel="stylesheet" href="/your/tdiary/path/coderay.css" type="text/css" media="all">')}
|
52
|
+
</pre>
|
53
|
+
|
54
|
+
|
55
|
+
<h4>Print default stylesheet of CodeRay</h4>
|
56
|
+
<p>1. The coderay command installed along with the CodeRay gem can print out a stylesheet for you.</p>
|
57
|
+
<pre>
|
58
|
+
bundle exec coderay stylesheet > /your/tdiary/path/coderay.css
|
59
|
+
</pre>
|
60
|
+
<p>2. Edit your stylesheet and modify permissions.</p>
|
61
|
+
|
62
|
+
HTML
|
63
|
+
|
64
|
+
coderay_conf
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
# Local Variables:
|
69
|
+
# mode: ruby
|
70
|
+
# indent-tabs-mode: t
|
71
|
+
# tab-width: 3
|
72
|
+
# ruby-indent-level: 3
|
73
|
+
# End:
|
74
|
+
# vim: ts=3
|
data/plugin/image_ex.rb
CHANGED
@@ -275,9 +275,17 @@ add_form_proc do |date|
|
|
275
275
|
if imageex_useresize == 1 or imageex_useresize == 2
|
276
276
|
open(image_file,"rb") do |fh|
|
277
277
|
img = ImageSize.new(fh.read)
|
278
|
-
|
279
|
-
|
280
|
-
|
278
|
+
begin
|
279
|
+
# old image_size.rb
|
280
|
+
width = img.get_width
|
281
|
+
height = img.get_height
|
282
|
+
orig_type = img.get_type
|
283
|
+
rescue NoMethodError
|
284
|
+
# image_size gem
|
285
|
+
width = img.width
|
286
|
+
height = img.height
|
287
|
+
orig_type = (img.format || "OTHER").to_s.upcase
|
288
|
+
end
|
281
289
|
if imageex_converttype == 0
|
282
290
|
new_type = "jpg"
|
283
291
|
elsif imageex_converttype == 1
|
@@ -383,23 +391,13 @@ add_form_proc do |date|
|
|
383
391
|
r << %Q[
|
384
392
|
<script type="text/javascript">
|
385
393
|
<!--
|
386
|
-
var elem=null
|
394
|
+
var elem=null;
|
387
395
|
function ins(val){
|
388
396
|
elem.value+=val
|
389
397
|
}
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
var e=document.forms[i].elements[j]
|
394
|
-
if(e.type&&e.type=="textarea"){
|
395
|
-
if(elem==null){
|
396
|
-
elem=e
|
397
|
-
}
|
398
|
-
e.onfocus=new Function("elem=this")
|
399
|
-
}
|
400
|
-
}
|
401
|
-
}
|
402
|
-
}
|
398
|
+
$(document).ready(function(){
|
399
|
+
$("textarea").focus(function() { elem = this; });
|
400
|
+
});
|
403
401
|
//-->
|
404
402
|
</script>
|
405
403
|
]
|
data/plugin/makerss_category.rb
CHANGED
@@ -26,7 +26,7 @@ class MakeRssCategory < MakeRssFull
|
|
26
26
|
def file
|
27
27
|
f = @conf['makerss.category.file'] || 'category.rdf'
|
28
28
|
f = 'category.rdf' if f.length == 0
|
29
|
-
f
|
29
|
+
f =~ %r|^/| ? f : "#{document_root}/#{f}"
|
30
30
|
end
|
31
31
|
|
32
32
|
def write( encoder )
|
@@ -40,4 +40,4 @@ class MakeRssCategory < MakeRssFull
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
@makerss_rsses << MakeRssCategory::new( @conf )
|
43
|
+
@makerss_rsses << MakeRssCategory::new( @conf, @cgi )
|
data/plugin/makerss_comment.rb
CHANGED
@@ -18,7 +18,7 @@ class MakeRssComments < MakeRssFull
|
|
18
18
|
def file
|
19
19
|
f = @conf['makerss.no_comments.file'] || 'comments.rdf'
|
20
20
|
f = 'comments.rdf' if f.length == 0
|
21
|
-
f
|
21
|
+
f =~ %r|^/| ? f : "#{document_root}/#{f}"
|
22
22
|
end
|
23
23
|
|
24
24
|
def write( encoder )
|
@@ -32,4 +32,4 @@ class MakeRssComments < MakeRssFull
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
@makerss_rsses << MakeRssComments::new( @conf )
|
35
|
+
@makerss_rsses << MakeRssComments::new( @conf, @cgi )
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# nhk_program_info.rb - embedded NHK program information
|
4
|
+
# refer to following URL.
|
5
|
+
# http://api-portal.nhk.or.jp/ja
|
6
|
+
#
|
7
|
+
# Copyright (C) 2014, tamoot <tamoot+tdiary@gmail.com>
|
8
|
+
# You can redistribute it and/or modify it under GPL2.
|
9
|
+
#
|
10
|
+
|
11
|
+
require 'json'
|
12
|
+
require 'date'
|
13
|
+
require 'timeout'
|
14
|
+
require 'open-uri'
|
15
|
+
|
16
|
+
|
17
|
+
def nhk_program_info(id, service, area = nil)
|
18
|
+
|
19
|
+
area = @conf['nhk_api.default.area'] if area.nil? || area == ""
|
20
|
+
|
21
|
+
json = nil
|
22
|
+
begin
|
23
|
+
json = call_nhk_json(id, service, area)
|
24
|
+
rescue
|
25
|
+
return %Q|<p>#{__FILE__}: error, #{$!}</p>|
|
26
|
+
end
|
27
|
+
|
28
|
+
stime = DateTime::parse(json["start_time"]).strftime("%Y/%m/%d %H:%M:%S")
|
29
|
+
etime = DateTime::parse(json["end_time"]).strftime("%Y/%m/%d %H:%M:%S")
|
30
|
+
|
31
|
+
return <<-PROGRAM_HTML
|
32
|
+
<div class="amazon-detail">
|
33
|
+
<a href="#{json["program_url"]}">
|
34
|
+
<img src="#{json["program_logo"]["url"]}" alt="#{@conf.to_native json["title"]}" class="amazon-detail left">
|
35
|
+
<div class="amazon-detail-desc">
|
36
|
+
<span class="amazon-title">#{h json["service"]["name"]} - #{h json["title"]}</span><br><br>
|
37
|
+
<span class="amazon-title">#{h json["subtitle"]}</span><br><br>
|
38
|
+
<span class="amazon-price">#{h stime} - #{etime}</span><br>
|
39
|
+
<span class="amazon-price">#{h '情報提供:NHK'}</span>
|
40
|
+
</div>
|
41
|
+
<br style="clear: left">
|
42
|
+
</a>
|
43
|
+
</div>
|
44
|
+
PROGRAM_HTML
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def call_nhk_json(id, service, area)
|
49
|
+
|
50
|
+
data = nil
|
51
|
+
nhk_endpoint = "http://api.nhk.or.jp/v1/pg/info/#{area}/#{service}/#{id}.json?key=#{@conf['nhk_api.id']}"
|
52
|
+
|
53
|
+
nhk_cache_path = "#{@cache_path}/nhk"
|
54
|
+
Dir::mkdir(nhk_cache_path) unless File::directory?(nhk_cache_path)
|
55
|
+
|
56
|
+
cache = "#{nhk_cache_path}/#{area}_#{service}_#{id}.json"
|
57
|
+
begin
|
58
|
+
data = File.read(cache)
|
59
|
+
File::delete(cache) if Time::now > File::mtime( cache ) + 60*60*24*30
|
60
|
+
|
61
|
+
rescue
|
62
|
+
open_param = [nhk_endpoint]
|
63
|
+
open_param << {:proxy => "http://#{@conf['proxy']}"} if @conf['proxy']
|
64
|
+
|
65
|
+
status = nil
|
66
|
+
data = nil
|
67
|
+
timeout(10) do
|
68
|
+
open(*open_param){ |ff| data = ff.read; status = ff.status[0] }
|
69
|
+
end
|
70
|
+
raise "API Error" if status.to_s != '200'
|
71
|
+
File::open(cache, 'wb') {|f| f.write(data) }
|
72
|
+
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
JSON::parse(data)['list'][service][0]
|
77
|
+
end
|
78
|
+
|
79
|
+
add_conf_proc( 'nhk', 'NHK API' ) do
|
80
|
+
if @mode == 'saveconf' then
|
81
|
+
@conf['nhk_api.id'] = @cgi.params['nhk_api.id'][0]
|
82
|
+
@conf['nhk_api.default.area'] = @cgi.params['nhk_api.default.area'][0]
|
83
|
+
end
|
84
|
+
|
85
|
+
<<-HTML
|
86
|
+
<h3 class="subtitle">API key</h3>
|
87
|
+
<p><input name="nhk_api.id" value="#{h @conf['nhk_api.id']}" size="70"></p>
|
88
|
+
<p>Register your tDiary and get API key.</p>
|
89
|
+
<a href="http://www2.nhk.or.jp/api/">Go NHK API settings.</a></p>
|
90
|
+
<h3 class="subtitle">Default Area</h3>
|
91
|
+
<p><input name="nhk_api.default.area" value="#{h @conf['nhk_api.default.area']}" size="70"></p>
|
92
|
+
<a href="http://www2.nhk.or.jp/api/">Refer NHK API settings.</a></p>
|
93
|
+
HTML
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
# Local Variables:
|
98
|
+
# mode: ruby
|
99
|
+
# indent-tabs-mode: t
|
100
|
+
# tab-width: 3
|
101
|
+
# ruby-indent-level: 3
|
102
|
+
# End:
|
103
|
+
# vim: ts=3
|
104
|
+
|
data/plugin/profile.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# profile(id[, service = :twitter])
|
6
6
|
# - id: user ID for profile service
|
7
7
|
# - service: profile service (default is :twitter)
|
8
|
-
# Choose from :github, :twitter, :friendfeed
|
8
|
+
# Choose from :github, :twitter, :friendfeed
|
9
9
|
#
|
10
10
|
# Copyright (C) 2009 by MATSUOKA Kohei < http://www.machu.jp/ >
|
11
11
|
# Distributed under the GPL.
|
@@ -132,23 +132,9 @@ module ::Profile
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
-
# iddy.jp
|
136
|
-
# this class is based on iddy.rb
|
135
|
+
# iddy.jp, for backward compatibility
|
137
136
|
class Iddy < Base
|
138
|
-
|
139
|
-
# If you will modify or release another version of this code,
|
140
|
-
# please get your own application key from iddy.jp and replace below.
|
141
|
-
######################################################################
|
142
|
-
API_KEY = '9262ea8ffba962aabb4f1a1d3f1cfa953b11aa23' unless defined? API_KEY
|
143
|
-
|
144
|
-
property :name, '//response/users/user/accountname'
|
145
|
-
property :image, '//response/users/user/imageurl'
|
146
|
-
property :description, '/response/users/user/profile'
|
147
|
-
endpoint {|id| "http://iddy.jp/api/user/?apikey=#{API_KEY}&accountname=#{id}" }
|
148
|
-
|
149
|
-
def link
|
150
|
-
"http://iddy.jp/profile/#{@id}/"
|
151
|
-
end
|
137
|
+
# dummy class
|
152
138
|
end
|
153
139
|
|
154
140
|
# gravatar.com
|
@@ -181,10 +167,9 @@ def profile(id, service = :twitter, options = {})
|
|
181
167
|
:twitter => Profile::Service::Twitter,
|
182
168
|
:github => Profile::Service::GitHub,
|
183
169
|
:friendfeed => Profile::Service::FriendFeed,
|
184
|
-
:iddy => Profile::Service::Iddy,
|
185
170
|
:gravatar => Profile::Service::Gravatar,
|
186
171
|
:hatena => Profile::Service::Hatena,
|
187
|
-
}[service.to_s.downcase.to_sym]
|
172
|
+
}[service.to_s.downcase.to_sym] || Profile::Service::Twitter
|
188
173
|
|
189
174
|
# TODO: create cache manager class
|
190
175
|
|
data/plugin/search-bing.rb
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
#
|
10
10
|
# @options['search-bing.appid'] : Your Bing AppId
|
11
11
|
# @options['search.result_filter'] : your dialy's URL format of DAY mode into Regexp.
|
12
|
+
# @options['search-bing.base'] : Base URI of your diary (for debugging)
|
12
13
|
#
|
13
14
|
|
14
15
|
require 'timeout'
|
@@ -32,11 +33,16 @@ end
|
|
32
33
|
def search_bing_api( q, start = 0 )
|
33
34
|
appid = @conf['search-bing.appid']
|
34
35
|
|
35
|
-
u = 'https://api.datamarket.azure.com/
|
36
|
+
u = 'https://api.datamarket.azure.com/Bing/SearchWeb/v1/Web'
|
36
37
|
u << "?Query=%27#{q}%27&Options=%27EnableHighlighting%27&$top=50&$skip=#{start}&$format=Json"
|
37
38
|
uri = URI( u )
|
38
39
|
|
39
|
-
|
40
|
+
begin
|
41
|
+
open( uri, {:http_basic_authentication => [appid, appid]} ).read
|
42
|
+
rescue SecurityError
|
43
|
+
### FIX ME: mysterious error at 1st access to the API
|
44
|
+
open( uri, {:http_basic_authentication => [appid, appid]} ).read
|
45
|
+
end
|
40
46
|
|
41
47
|
### FIX ME: this code failed on Timeout error, temporary using open-uri above.
|
42
48
|
# px_host, px_port = (@conf['proxy'] || '').split( /:/ )
|
@@ -58,12 +64,10 @@ def search_result
|
|
58
64
|
start = CGI::unescape( @cgi.params['start'][0] || '0' ).to_i
|
59
65
|
|
60
66
|
begin
|
61
|
-
uri = URI::parse( @conf.base_url )
|
62
|
-
#uri = URI::parse( 'http://sho.tdiary.net/' ) ### FOR DEBUGGING ###
|
67
|
+
uri = URI::parse( @conf['search-bing.base'] || @conf.base_url )
|
63
68
|
q = "#{query} site:#{uri.host}"
|
64
69
|
q << %Q| inurl:"#{uri.path}"| unless uri.path == '/'
|
65
|
-
|
66
|
-
json = JSON::parse( xml )
|
70
|
+
json = JSON::parse(search_bing_api(u(q.untaint), start))
|
67
71
|
rescue Net::HTTPError
|
68
72
|
return %Q|<p class="message">#$!</p>|
|
69
73
|
end
|