File: referer_scheme.rb

package info (click to toggle)
tdiary 2.0.1-1sarge1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 7,220 kB
  • ctags: 1,667
  • sloc: ruby: 20,044; lisp: 476; makefile: 91; sql: 32; sh: 31
file content (79 lines) | stat: -rw-r--r-- 2,150 bytes parent folder | download | duplicates (3)
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
=begin
= Meta-scheme plugin((-$Id: referer_scheme.rb,v 1.8 2004/03/16 08:17:48 tadatadashi 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})(?:\.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