aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/sisu/v5/ao_hash_digest.rb
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2014-05-25 10:01:43 -0400
committerRalph Amissah <ralph@amissah.com>2014-05-25 10:01:43 -0400
commit16c30474f06ed3774ad524a38b55b7840de057d0 (patch)
tree03f20a30c1853b3d5cb893556aa633be2407a4d8 /lib/sisu/v5/ao_hash_digest.rb
parentv5 v6: version & changelog (& rakefile) (diff)
v5: merge v6 to v5, version bump to 5.4.*, reason adds structure checksisu_5.4.0
* ao, document structure check, stop processing on major error (with error message & text at location of failure) [reason for version bump the addition of structure check] * utils, add ok code marker * ao, heading with no ocn, distinguish ~# from -# * ~# is general & means no ocn (for any object to which it is applied) * -# is relevant only for 1~ dummy headings & instructs that they should be removed from output where possible * applied so far to pdf, odt & plaintext * ao_images, reduce warnings when ruby RMagic absent as program used directly * reduced dependency on ruby RMagic library (as some time way back had issues) * ao, document markup structure check, skip processing file on major error * with error message & text at location of failure * texpdf, urls in creator cause breakage * texpdf, mailto markup links set for normal text objects * texpdf, '&' in heading breaks toc (now removed from toc (not heading)), bug * revisit, bug * texpdf, for urls switch to sans serif (small fontsize) * instead of typewriter, latex default * texpdf, pdf colored hyperlinks configurable * --pdf-hyperlinks-color --pdf-hyperlinks-no-color or --pdf-hyperlinks-monochrome * ['default']['pdf_hyperlinks']='color' (other options switch hyperlink color off 'no-color' 'color-off' 'monochrome') * texpdf, pdf default font size configurable (cli & sisurc.yml) (no fractions) * --pdf-fontsize-12 --pdf-fontsize-8 * default: texpdf_fontsize: 12 * texpdf, headings and table of contents representation * fixes 1~ and 2~ result in the same formatting 1~ 2~ & 3~ now differentiated, see discussion in sisu.org under #744383 * fixes :A smaller formatted than :B A~ B~ C~ now the same size, see discussion in sisu.org under #744383 * :B and :C result in the same formatting, issue explained see sisu.org * texpdf, (internal coding) fontface, rename texpdf_font texpdf_fontface * texpdf, (internal coding) use symbols to identify page orientation * param, metadata rights, line-breaks instead of semicolons separating rights * fixes remove trailing semicolon after :copyright: * digests sha512 option implemented * options sha512 sha256 md5 * command line --sha512 * rcconf.yml ['defsault']['digest'] = sha512 * xml object citation numbering (docbook fictionbook)
Diffstat (limited to 'lib/sisu/v5/ao_hash_digest.rb')
-rw-r--r--lib/sisu/v5/ao_hash_digest.rb24
1 files changed, 17 insertions, 7 deletions
diff --git a/lib/sisu/v5/ao_hash_digest.rb b/lib/sisu/v5/ao_hash_digest.rb
index 3f372893..1c20671f 100644
--- a/lib/sisu/v5/ao_hash_digest.rb
+++ b/lib/sisu/v5/ao_hash_digest.rb
@@ -65,7 +65,7 @@ module SiSU_AO_Hash
class ObjectDigest
def initialize(md,data,env=nil)
@md,@data,@env=md,data,env
- @env ||=SiSU_Env::InfoEnv.new(@md.fns)
+ @env ||=SiSU_Env::InfoEnv.new(@md.fns,@md)
end
def object_digest
# 1. clean/stripped text without any markup, paragraph, headings etc. without endnotes
@@ -74,11 +74,11 @@ module SiSU_AO_Hash
# [digests should not include other digests]
data=@data.compact
@tuned_file=[]
- sha_ =(@env.digest.type=='sha256' ? true : false)
+ sha_ =@env.digest(@md.opt).type
begin
sha_ ? (require 'digest/sha2') : (require 'digest/md5')
rescue LoadError
- SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error((sha_ ? 'digest/sha2' : 'digest/md5') + ' NOT FOUND')
+ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).error(sha_ + ' NOT FOUND')
end
data.each do |t_o|
unless t_o.obj.is_a?(Array)
@@ -88,11 +88,16 @@ module SiSU_AO_Hash
&& t_o.of !=:comment \
&& t_o.of !=:layout) \
&& t_o.ocn.is_a?(Fixnum)
- if sha_
+ case sha_
+ when :sha512
+ for hash_class in [ Digest::SHA512 ]
+ @tuned_file << stamped(t_o,hash_class)
+ end
+ when :sha256
for hash_class in [ Digest::SHA256 ]
@tuned_file << stamped(t_o,hash_class)
end
- else
+ when :md5
for hash_class in [ Digest::MD5 ]
@tuned_file << stamped(t_o,hash_class)
end
@@ -111,10 +116,15 @@ module SiSU_AO_Hash
if en_plus =~/#{Mx[:en_a_o]}.+?#{Mx[:en_a_c]}|#{Mx[:en_b_o]}.+?#{Mx[:en_b_c]}/
t_o_txt,en_open,en_txt,en_close=/(.*?)(#{Mx[:en_a_o]}|#{Mx[:en_b_o]})(.+?)(#{Mx[:en_a_c]}|#{Mx[:en_b_c]})/m.match(en_plus)[1..4]
stripped_en=SiSU_TextRepresentation::Alter.new(en_txt).strip_clean_of_markup
- digest_en_strip=if @env.digest.type =~/sha256/
+ digest_en_strip=case @env.digest(@md.opt).type
+ when :sha512
+ Digest::SHA512.hexdigest(stripped_en)
+ when :sha256
Digest::SHA256.hexdigest(stripped_en)
- else
+ when :md5
Digest::MD5.hexdigest(stripped_en)
+ else
+ Digest::SHA256.hexdigest(stripped_en)
end
t_o_txt + en_open + en_txt + Mx[:id_o] + digest_en_strip + Mx[:id_c] + en_close
else STDERR.puts "Error Exception - problem encountered with:\n#{en_plus}" #arbitrary exception, tidy up