refbiblio_rafa 0.3.0
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/.coveralls.yml +2 -0
- data/.travis.yml +9 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +108 -0
- data/Guardfile +82 -0
- data/LICENSE.txt +21 -0
- data/README.md +3 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/coverage/.last_run.json +5 -0
- data/coverage/.resultset.json +467 -0
- data/coverage/.resultset.json.lock +0 -0
- data/doc/Doublylinkedlist.html +129 -0
- data/doc/Doublylinkedlist/Doublylinkedlist.html +1139 -0
- data/doc/RefAPA.html +129 -0
- data/doc/RefAPA/Refapa.html +503 -0
- data/doc/RefBiblio.html +129 -0
- data/doc/RefBiblio/ArtPeriodico.html +522 -0
- data/doc/RefBiblio/DocElectronico.html +782 -0
- data/doc/RefBiblio/Libro.html +514 -0
- data/doc/RefBiblio/Periodicas.html +345 -0
- data/doc/RefBiblio/Referencia.html +1068 -0
- data/doc/_index.html +201 -0
- data/doc/class_list.html +58 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/file.README.html +79 -0
- data/doc/file_list.html +60 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +79 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +181 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +303 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/doublylinkedlist/doublylinkedlist.rb +161 -0
- data/lib/doublylinkedlist/version.rb +3 -0
- data/lib/refAPA/refapa.rb +36 -0
- data/lib/refAPA/version.rb +3 -0
- data/lib/refBiblio.rb +8 -0
- data/lib/refBiblio/referencia.rb +242 -0
- data/lib/refBiblio/version.rb +3 -0
- data/refBiblio.gemspec +33 -0
- metadata +203 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
|
+
<title>
|
|
7
|
+
Top Level Namespace
|
|
8
|
+
|
|
9
|
+
— Documentation by YARD 0.8.7.6
|
|
10
|
+
|
|
11
|
+
</title>
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
|
|
16
|
+
|
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
|
18
|
+
hasFrames = window.top.frames.main ? true : false;
|
|
19
|
+
relpath = '';
|
|
20
|
+
framesUrl = "frames.html#!top-level-namespace.html";
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
25
|
+
|
|
26
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
</head>
|
|
30
|
+
<body>
|
|
31
|
+
<div id="header">
|
|
32
|
+
<div id="menu">
|
|
33
|
+
|
|
34
|
+
<a href="_index.html">Index</a> »
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
<span class="title">Top Level Namespace</span>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div id="search">
|
|
44
|
+
|
|
45
|
+
<a class="full_list_link" id="class_list_link"
|
|
46
|
+
href="class_list.html">
|
|
47
|
+
Class List
|
|
48
|
+
</a>
|
|
49
|
+
|
|
50
|
+
<a class="full_list_link" id="method_list_link"
|
|
51
|
+
href="method_list.html">
|
|
52
|
+
Method List
|
|
53
|
+
</a>
|
|
54
|
+
|
|
55
|
+
<a class="full_list_link" id="file_list_link"
|
|
56
|
+
href="file_list.html">
|
|
57
|
+
File List
|
|
58
|
+
</a>
|
|
59
|
+
|
|
60
|
+
</div>
|
|
61
|
+
<div class="clear"></div>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<iframe id="search_frame"></iframe>
|
|
65
|
+
|
|
66
|
+
<div id="content"><h1>Top Level Namespace
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
</h1>
|
|
71
|
+
|
|
72
|
+
<dl class="box">
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
</dl>
|
|
82
|
+
<div class="clear"></div>
|
|
83
|
+
|
|
84
|
+
<h2>Defined Under Namespace</h2>
|
|
85
|
+
<p class="children">
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Doublylinkedlist.html" title="Doublylinkedlist (module)">Doublylinkedlist</a></span>, <span class='object_link'><a href="RefAPA.html" title="RefAPA (module)">RefAPA</a></span>, <span class='object_link'><a href="RefBiblio.html" title="RefBiblio (module)">RefBiblio</a></span>
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
</p>
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
</div>
|
|
104
|
+
|
|
105
|
+
<div id="footer">
|
|
106
|
+
Generated on Tue Dec 22 21:54:44 2015 by
|
|
107
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
108
|
+
0.8.7.6 (ruby-2.2.1).
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
</body>
|
|
112
|
+
</html>
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
module Doublylinkedlist
|
|
2
|
+
Struct.new("Nodo", :ant, :valor, :sig)
|
|
3
|
+
# En esta clase creamos nuestra propia lista doblemente enlazada
|
|
4
|
+
# @author Rafael Herrero
|
|
5
|
+
class Doublylinkedlist
|
|
6
|
+
include Enumerable
|
|
7
|
+
# Iniciar los punteros de la lista, inicio y final
|
|
8
|
+
def initialize()
|
|
9
|
+
@inicio = nil
|
|
10
|
+
@final = nil
|
|
11
|
+
end
|
|
12
|
+
# Metodo para imprimir la lista con formato
|
|
13
|
+
# @return la lista formateada en un string
|
|
14
|
+
def to_s
|
|
15
|
+
actual = @inicio
|
|
16
|
+
cadena = "|"
|
|
17
|
+
while !actual.nil?
|
|
18
|
+
cadena << actual[:valor].to_s
|
|
19
|
+
|
|
20
|
+
if !actual[:sig].nil?
|
|
21
|
+
cadena << ", "
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
actual = actual[:sig]
|
|
25
|
+
end
|
|
26
|
+
cadena << "|"
|
|
27
|
+
return cadena
|
|
28
|
+
end
|
|
29
|
+
# Metodo que nos permite insertar algo al inicio de la lista
|
|
30
|
+
# @param [val] val recibe el valor a insertar en la lista
|
|
31
|
+
|
|
32
|
+
def insertar_inicio(val)
|
|
33
|
+
if @inicio.nil?
|
|
34
|
+
@inicio = Struct::Nodo.new(nil, val, nil)
|
|
35
|
+
@final = @inicio
|
|
36
|
+
else
|
|
37
|
+
copia = @inicio
|
|
38
|
+
@inicio = Struct::Nodo.new(nil, val, copia)
|
|
39
|
+
copia[:ant] = @inicio
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
# Metodo que nos permite insertar algo al final de la lista
|
|
43
|
+
# @param [val] val recibe el valor a insertar en la lista
|
|
44
|
+
|
|
45
|
+
def insertar_final(val)
|
|
46
|
+
if @final.nil?
|
|
47
|
+
@inicio = Struct::Nodo.new(nil, val, nil)
|
|
48
|
+
@final = @inicio
|
|
49
|
+
else
|
|
50
|
+
copia = @final
|
|
51
|
+
@final[:sig] = Struct::Nodo.new(copia, val, nil)
|
|
52
|
+
copia2 = @final[:sig]
|
|
53
|
+
@final = copia2
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
# Metodo que nos permite extraer algo al inicio de la lista
|
|
57
|
+
|
|
58
|
+
def extraer_inicio()
|
|
59
|
+
|
|
60
|
+
if !@inicio.nil?
|
|
61
|
+
|
|
62
|
+
if @inicio[:sig].nil? && @final[:sig].nil?
|
|
63
|
+
@inicio = nil
|
|
64
|
+
@final = nil
|
|
65
|
+
|
|
66
|
+
else
|
|
67
|
+
@inicio = @inicio[:sig]
|
|
68
|
+
@inicio[:ant] = nil
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
else
|
|
72
|
+
raise RuntimeError, "La lista esta vacia"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
# Metodo que nos permite extraer algo al final de la lista
|
|
76
|
+
|
|
77
|
+
def extraer_final()
|
|
78
|
+
|
|
79
|
+
if !@inicio.nil?
|
|
80
|
+
|
|
81
|
+
if @inicio[:sig].nil? && @final[:sig].nil?
|
|
82
|
+
@inicio = nil
|
|
83
|
+
@final = nil
|
|
84
|
+
|
|
85
|
+
else
|
|
86
|
+
@final = @final[:ant]
|
|
87
|
+
@final[:sig] = nil
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
else
|
|
91
|
+
raise RuntimeError, "La lista esta vacia"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
# Metodo que nos devuelve la cantidad de elementos en la lista
|
|
95
|
+
# @return cantidad de elementos en la lista
|
|
96
|
+
|
|
97
|
+
def tamano()
|
|
98
|
+
if !@inicio.nil?
|
|
99
|
+
|
|
100
|
+
contador = 1
|
|
101
|
+
copia = @inicio
|
|
102
|
+
|
|
103
|
+
while !copia[:sig].nil?
|
|
104
|
+
contador += 1
|
|
105
|
+
copia2 = copia[:sig]
|
|
106
|
+
copia = copia2
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
return contador
|
|
110
|
+
end
|
|
111
|
+
# Metodo que devuelve lo contenido en una posicion de la lista
|
|
112
|
+
# @param [pos] pos del elemento deseado
|
|
113
|
+
# @return nodo de la posicion de la lista
|
|
114
|
+
def posicion (pos)
|
|
115
|
+
if @inicio.nil?
|
|
116
|
+
raise RuntimeError, "La lista esta vacia"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
if pos<0 || pos>tamano-1
|
|
120
|
+
raise RuntimeError, "La posicion no es correcta"
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
contador=0
|
|
124
|
+
copia=@inicio
|
|
125
|
+
while contador<pos && !copia.nil?
|
|
126
|
+
copia2 = copia[:sig]
|
|
127
|
+
copia = copia2
|
|
128
|
+
contador += 1
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
return copia[:valor]
|
|
132
|
+
end
|
|
133
|
+
# Método para que la lista sea enumerable
|
|
134
|
+
|
|
135
|
+
def each (&block)
|
|
136
|
+
copia = @inicio
|
|
137
|
+
while !copia.nil?
|
|
138
|
+
block.call(copia[:valor])
|
|
139
|
+
copia = copia[:sig]
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
# Metodo que nos ordenada la lista segun los criterios de la APA
|
|
143
|
+
|
|
144
|
+
def ordenar!
|
|
145
|
+
cambio = true
|
|
146
|
+
while cambio
|
|
147
|
+
cambio = false
|
|
148
|
+
i = @inicio
|
|
149
|
+
i_1 = @inicio[:sig]
|
|
150
|
+
while i_1 != nil
|
|
151
|
+
if(i[:valor] > i_1[:valor])
|
|
152
|
+
i[:valor], i_1[:valor] = i_1[:valor], i[:valor]
|
|
153
|
+
cambio = true
|
|
154
|
+
end
|
|
155
|
+
i = i_1
|
|
156
|
+
i_1 = i_1[:sig]
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'refBiblio/referencia'
|
|
2
|
+
|
|
3
|
+
module RefAPA
|
|
4
|
+
# En esta clase creamos nuestra lista de referencias segun APA
|
|
5
|
+
# @author Rafael Herrero
|
|
6
|
+
class Refapa
|
|
7
|
+
include Enumerable
|
|
8
|
+
def initialize()
|
|
9
|
+
@lista = Doublylinkedlist::Doublylinkedlist.new
|
|
10
|
+
end
|
|
11
|
+
# Metodo que inserta una referencia en la lista y la ordena
|
|
12
|
+
# @param [ref] ref a insertar
|
|
13
|
+
|
|
14
|
+
def insertar(ref)
|
|
15
|
+
@lista.insertar_final(ref)
|
|
16
|
+
@lista.ordenar!
|
|
17
|
+
end
|
|
18
|
+
# Método para que la clase sea enumerable
|
|
19
|
+
# @yield [i] Cada elemento de la lista
|
|
20
|
+
|
|
21
|
+
def each
|
|
22
|
+
@lista.each{ |i| yield i}
|
|
23
|
+
end
|
|
24
|
+
# Metodo que devuelve en un string la lista de referencias formateada
|
|
25
|
+
# @return un string con la lista de referencias ordenada y con formato
|
|
26
|
+
|
|
27
|
+
def to_s
|
|
28
|
+
string = ""
|
|
29
|
+
@lista.each do |i|
|
|
30
|
+
string << i.to_s
|
|
31
|
+
string << "\n"
|
|
32
|
+
end
|
|
33
|
+
return string
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/lib/refBiblio.rb
ADDED
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
require 'date'
|
|
2
|
+
|
|
3
|
+
module RefBiblio
|
|
4
|
+
class Referencia
|
|
5
|
+
# Clase que nos permite representar cada elemento de una referencia
|
|
6
|
+
# @author Rafael Herrero
|
|
7
|
+
|
|
8
|
+
include Comparable
|
|
9
|
+
attr_accessor :autor, :titulo, :editorial, :publicacion
|
|
10
|
+
def initialize()
|
|
11
|
+
end
|
|
12
|
+
# Metodo para guardar el nombre del autor/autores
|
|
13
|
+
# @param [autor] autor Nombre del autor a introducir
|
|
14
|
+
|
|
15
|
+
def autor (autor)
|
|
16
|
+
str=""
|
|
17
|
+
autor.each do |a|
|
|
18
|
+
separar = a.split(/\W+/)
|
|
19
|
+
str+=separar[1]
|
|
20
|
+
str+=", "
|
|
21
|
+
unless separar[2].nil?
|
|
22
|
+
str+=separar[2][0]
|
|
23
|
+
str+=". "
|
|
24
|
+
end
|
|
25
|
+
str+=separar[0][0]
|
|
26
|
+
str+="."
|
|
27
|
+
str+=" & " unless a == autor.last
|
|
28
|
+
end
|
|
29
|
+
@autor = str
|
|
30
|
+
end
|
|
31
|
+
# Metodo para guardar el titulo de la referencia
|
|
32
|
+
# @param [titulo] titulo Titulo de la referencia a introducir
|
|
33
|
+
|
|
34
|
+
def titulo (titulo)
|
|
35
|
+
tit = titulo.split(' ')
|
|
36
|
+
tit.each do |word|
|
|
37
|
+
if word.length > 3
|
|
38
|
+
word.capitalize!
|
|
39
|
+
else
|
|
40
|
+
word.downcase!
|
|
41
|
+
end
|
|
42
|
+
if word == tit[0]
|
|
43
|
+
word.capitalize!
|
|
44
|
+
end
|
|
45
|
+
@titulo = tit.join(' ')
|
|
46
|
+
end
|
|
47
|
+
# Metodo para guardar el editorial de la referencia
|
|
48
|
+
# @param [editorial] editorial Editorial de la referencia a introducir
|
|
49
|
+
|
|
50
|
+
def editorial(editorial)
|
|
51
|
+
@editorial = editorial
|
|
52
|
+
end
|
|
53
|
+
# Metodo para guardar la fecha de publicacion de la referencia
|
|
54
|
+
# @param [publicacion] publicacion Fecha de publicacion de la referencia a introducir
|
|
55
|
+
|
|
56
|
+
def publicacion (publicacion)
|
|
57
|
+
@publicacion = publicacion
|
|
58
|
+
end
|
|
59
|
+
# Metodo para obtener el titulo de la referencia
|
|
60
|
+
# @return Titulo de la referencia
|
|
61
|
+
|
|
62
|
+
def get_titulo
|
|
63
|
+
@titulo
|
|
64
|
+
end
|
|
65
|
+
# Metodo para obtener el autor/autores de la referencia
|
|
66
|
+
# @return Autor/autores de la referencia
|
|
67
|
+
|
|
68
|
+
def get_autor
|
|
69
|
+
@autor
|
|
70
|
+
end
|
|
71
|
+
# Metodo para obtener el editorial de la referencia
|
|
72
|
+
# @return Editorial de la referencia
|
|
73
|
+
|
|
74
|
+
def get_editorial
|
|
75
|
+
@editorial
|
|
76
|
+
end
|
|
77
|
+
# Metodo para obtener la fecha de publicacion de la referencia
|
|
78
|
+
# @return Fecha de publicacion de la referencia
|
|
79
|
+
|
|
80
|
+
def get_publicacion
|
|
81
|
+
@publicacion
|
|
82
|
+
end
|
|
83
|
+
# Método con el que podemos usar el modulo Enumerable
|
|
84
|
+
# @param otro Otro elemento a comparar
|
|
85
|
+
# @return Devuelve valores entre -1 y 1 segun el orden
|
|
86
|
+
|
|
87
|
+
def <=> (otro)
|
|
88
|
+
if(@autor == otro.get_autor)
|
|
89
|
+
if(@publicacion == otro.get_publicacion)
|
|
90
|
+
if(@titulo == otro.get_titulo)
|
|
91
|
+
return 0
|
|
92
|
+
else
|
|
93
|
+
arr = [@titulo, otro.get_titulo]
|
|
94
|
+
arr.sort_by!{|t| t.downcase}
|
|
95
|
+
if(arr.first == @titulo)
|
|
96
|
+
return 1
|
|
97
|
+
end
|
|
98
|
+
return -1
|
|
99
|
+
end
|
|
100
|
+
elsif publicacion > otro.get_publicacion
|
|
101
|
+
return -1
|
|
102
|
+
else
|
|
103
|
+
return 1
|
|
104
|
+
end
|
|
105
|
+
else
|
|
106
|
+
arr = [@autor, otro.get_autor]
|
|
107
|
+
arr.sort_by!{|t| t.downcase}
|
|
108
|
+
if(arr.first == @autor)
|
|
109
|
+
return -1
|
|
110
|
+
end
|
|
111
|
+
return 1
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
class Libro < Referencia
|
|
118
|
+
# Clase que nos permite representar libros de una referencia
|
|
119
|
+
# @author Rafael Herrero
|
|
120
|
+
|
|
121
|
+
attr_accessor :edicion, :volumen
|
|
122
|
+
def initialize(&block)
|
|
123
|
+
if block_given?
|
|
124
|
+
if block.arity == 1
|
|
125
|
+
yield self
|
|
126
|
+
else
|
|
127
|
+
instance_eval &block
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
# Metodo que nos permite introducir la edicion del libro
|
|
132
|
+
# @param [edicion] edicion Edicion del libro
|
|
133
|
+
|
|
134
|
+
def edicion(edicion)
|
|
135
|
+
@edicion = edicion
|
|
136
|
+
end
|
|
137
|
+
# Metodo que nos permite introducir el volumen del libro
|
|
138
|
+
# @param [volumen] volumen Volumen del libro
|
|
139
|
+
|
|
140
|
+
def volumen (volumen)
|
|
141
|
+
@volumen = volumen
|
|
142
|
+
end
|
|
143
|
+
# Metodo que nos permite formatear las referencias de los libros
|
|
144
|
+
# @return Cadena de caracteres de la referencia del libro formateado
|
|
145
|
+
|
|
146
|
+
def to_s
|
|
147
|
+
string=""
|
|
148
|
+
string << @autor << " (" << Date::MONTHNAMES[get_publicacion.month] << " " << get_publicacion.day.to_s << ", " << get_publicacion.year.to_s << "). " << @titulo << " (" << @edicion.to_s << ") (" << @volumen.to_s << "). " << @editorial << "."
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
class Periodicas < Referencia
|
|
153
|
+
# Clase que nos permite representar todas las publicaciones periodicas de una referencia
|
|
154
|
+
# @author Rafael Herrero
|
|
155
|
+
|
|
156
|
+
attr_accessor :formato
|
|
157
|
+
# Metodo para insertar el formato, unico atributo en comun en las publicaciones periodicas
|
|
158
|
+
# @param [formato] formato Formato de la publicacion
|
|
159
|
+
|
|
160
|
+
def initialize(formato)
|
|
161
|
+
@formato = formato.capitalize
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
class ArtPeriodico < Periodicas
|
|
166
|
+
# Clase que nos permite representar los articulos periodisticos de una publicacion periodica
|
|
167
|
+
# @author Rafael Herrero
|
|
168
|
+
|
|
169
|
+
attr_accessor :paginas, :formato
|
|
170
|
+
def initialize(formato, &block)
|
|
171
|
+
if block_given?
|
|
172
|
+
if block.arity == 1
|
|
173
|
+
yield self
|
|
174
|
+
else
|
|
175
|
+
instance_eval &block
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
super(formato)
|
|
179
|
+
end
|
|
180
|
+
# Metodo que permite insertar el numero de paginas
|
|
181
|
+
# @param [paginas] paginas Numero de paginas del articulo periodistico
|
|
182
|
+
|
|
183
|
+
def paginas (paginas)
|
|
184
|
+
@paginas = paginas
|
|
185
|
+
end
|
|
186
|
+
# Metodo que nos devuelve la referencia del articulo periodistico formateado
|
|
187
|
+
# @return String de la referencia del articulo periodistico formateado
|
|
188
|
+
|
|
189
|
+
def to_s
|
|
190
|
+
string = ""
|
|
191
|
+
string << @autor << " (" << Date::MONTHNAMES[get_publicacion.month] << " " << get_publicacion.day.to_s << ", " << get_publicacion.year.to_s << "). " << @titulo << ". " << @editorial << ", pp. " << @formato << ", " << @paginas.to_s << " paginas" << "."
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
class DocElectronico < Periodicas
|
|
196
|
+
# Clase que nos permite representar los documentos electronicos de una publicacion periodica
|
|
197
|
+
# @author Rafael Herrero
|
|
198
|
+
|
|
199
|
+
attr_accessor :formato, :url, :fechacceso
|
|
200
|
+
def initialize(formato, &block)
|
|
201
|
+
if block_given?
|
|
202
|
+
if block.arity == 1
|
|
203
|
+
yield self
|
|
204
|
+
else
|
|
205
|
+
instance_eval &block
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
super(formato)
|
|
209
|
+
end
|
|
210
|
+
# Metodo que permite insertar la edicion
|
|
211
|
+
# @param [edicion] edicion Edicion del documento electronico
|
|
212
|
+
|
|
213
|
+
def edicion(edicion)
|
|
214
|
+
@edicion = edicion
|
|
215
|
+
end
|
|
216
|
+
# Metodo que permite insertar la fecha de acceso al documento
|
|
217
|
+
# @param [fechacceso] fechacceso Fecha de acceso al documento electronico
|
|
218
|
+
|
|
219
|
+
def fechacceso(fechacceso)
|
|
220
|
+
@fechacceso = fechacceso
|
|
221
|
+
end
|
|
222
|
+
# Metodo para almacenar la direccion web del documento electronico
|
|
223
|
+
# @param [url] url Direccion web del documento electronico
|
|
224
|
+
|
|
225
|
+
def url(url)
|
|
226
|
+
@url = url
|
|
227
|
+
end
|
|
228
|
+
# Metodo que nos devuelve la fecha de acceso al documento electronico almacenada
|
|
229
|
+
# @return Fecha de acceso al documento electronico
|
|
230
|
+
|
|
231
|
+
def get_fechacceso
|
|
232
|
+
@fechacceso
|
|
233
|
+
end
|
|
234
|
+
# Metodo que nos devuelve la referencia del documento electronico formateado
|
|
235
|
+
# @return String de la referencia del documento electronico formateado
|
|
236
|
+
|
|
237
|
+
def to_s
|
|
238
|
+
string = ""
|
|
239
|
+
string << @autor << " (" << Date::MONTHNAMES[get_publicacion.month] << " " << get_publicacion.day.to_s << ", " << get_publicacion.year.to_s << "). " << @titulo << @formato << ". " << @editorial << ": " << @edicion << ". Disponible en: " << @url << " (" << Date::MONTHNAMES[get_fechacceso.month] << " " << get_fechacceso.day.to_s << ", " << get_fechacceso.year.to_s << "). "
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|