File: referer_scheme.rb

package info (click to toggle)
tdiary 5.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,088 kB
  • sloc: ruby: 23,031; javascript: 1,029; xml: 325; makefile: 26; sh: 4
file content (86 lines) | stat: -rw-r--r-- 2,320 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
=begin
= Meta-scheme plugin((-$Id: referer_scheme.rb,v 1.9 2005-07-23 08:07:52 zunda Exp $-))
Enables to prefix `meta' schemes to URL regexp of the refer_table. See
#{lang}/referer_scheme.rb for a documentation.

== Copyright
Copyright (C) 2003 zunda <zunda at freeshell.org>

Permission is granted for use, copying, modification, distribution, and
distribution of modified versions of this work under the terms of GPL version 2 or later.
=end

unless @conf.referer_table.respond_to?( 'scheme_ymd', true ) then
	class << @conf.referer_table
		private
		def scheme_ymd( url, name )
			[
				['.*?(\d{4})[-/]?(\d{2})[-/]?(\d{2}).*', '(\1-\2-\3)'],
				['.*?(\d{4})[-/]?(\d{2}).*', '(\1-\2)'],
				['.*?(\d{2})[-/]?(\d{2}).*', '(\1-\2)'],
				['(.+)', '(\1)'],
			].each do |path, date|
				yield( url + path, name + date )
			end
			yield( url, name )
		end
	end
end

unless @conf.referer_table.respond_to?( 'scheme_tdiary', true ) then
	class << @conf.referer_table
		TdiaryDates = [
				['(?:\\?date=)?(\d{4})(\d{2})(\d{2})-(\d+)(?:\.html)?.*', '(\1-\2-\3~)'],
				['(?:\\?date=)?(\d{4})(\d{2})(\d{2})(?:\.html)?.*', '(\1-\2-\3)'],
				['(?:\\?date=)?(\d{4})(\d{2})(?:\.html)?.*', '(\1-\2)'],
				['(?:\\?date=)?(\d{2})(\d{2})(?:\.html)?.*', '(\1-\2)'],
		]
		private
		def scheme_tdiary( url, name )
			TdiaryDates.each do |a|
				yield( url + a[0], name + a[1] )
			end
			yield( url + '.*' , name )
		end
	end
end

unless @conf.referer_table.respond_to?( 'scheme_wiki', true ) then
	class << @conf.referer_table
		private
		def scheme_wiki( url, name )
			['\?([^;&$]*).*', '([^/]+)\/?$'].each do |p|
				yield( "#{url}#{p}", '\1 - ' + name )
			end
			yield( url, name )
		end
	end
end

unless @conf.referer_table.respond_to?( 'referer_scheme_each_orig' ) then

	class << @conf.referer_table
		# expands referer_table according to the meta-scheme
		alias referer_scheme_each_orig each
		def each
			self.referer_scheme_each_orig do |url, name|
				/^(\w+):/ =~ url
				if $1 && self.respond_to?( "scheme_#{$1}", true ) then
					self.send( "scheme_#{$1}", $', name ) do |expanded_url, expanded_name|
						yield( expanded_url, expanded_name )
					end
				else
					yield( url, name )
				end
			end
		end
	end

end

# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End: