diff options
Diffstat (limited to 'lib/sisu/hub_loop_markup_files.rb')
| -rw-r--r-- | lib/sisu/hub_loop_markup_files.rb | 170 | 
1 files changed, 170 insertions, 0 deletions
| diff --git a/lib/sisu/hub_loop_markup_files.rb b/lib/sisu/hub_loop_markup_files.rb new file mode 100644 index 00000000..f8e99522 --- /dev/null +++ b/lib/sisu/hub_loop_markup_files.rb @@ -0,0 +1,170 @@ +# encoding: utf-8 +=begin + +* Name: SiSU + +** Description: documents, structuring, processing, publishing, search +*** hub + +** Author: Ralph Amissah +  <ralph@amissah.com> +  <ralph.amissah@gmail.com> + +** Copyright: (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +  2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Ralph Amissah, +  All Rights Reserved. + +** License: GPL 3 or later: + +  SiSU, a framework for document structuring, publishing and search + +  Copyright (C) Ralph Amissah + +  This program is free software: you can redistribute it and/or modify it +  under the terms of the GNU General Public License as published by the Free +  Software Foundation, either version 3 of the License, or (at your option) +  any later version. + +  This program is distributed in the hope that it will be useful, but WITHOUT +  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +  more details. + +  You should have received a copy of the GNU General Public License along with +  this program. If not, see <http://www.gnu.org/licenses/>. + +  If you have Internet connection, the latest version of the GPL should be +  available at these locations: +  <http://www.fsf.org/licensing/licenses/gpl.html> +  <http://www.gnu.org/licenses/gpl.html> + +  <http://www.sisudoc.org/sisu/en/manifest/gpl.fsf.html> + +** SiSU uses: +  * Standard SiSU markup syntax, +  * Standard SiSU meta-markup syntax, and the +  * Standard SiSU object citation numbering and system + +** Hompages: +  <http://www.jus.uio.no/sisu> +  <http://www.sisudoc.org> + +** Git +  <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=summary> +  <http://git.sisudoc.org/gitweb/?p=code/sisu.git;a=blob;f=lib/sisu/hub_loop_markup_files.rb;hb=HEAD> + +=end +module SiSU_Hub_Loops +  require_relative 'constants'                         # constants.rb +  require_relative 'se'                                # se.rb +    include SiSU_Env +    include SiSU_Screen +  require_relative 'hub_actions'                       # hub_actions.rb +  require_relative 'hub_options'                       # hub_options.rb +  require_relative 'dp'                                # dp.rb +    include SiSU_Param +  require_relative 'utils'                             # utils.rb +  begin +    require 'uri' +  rescue LoadError +    SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia). +      error('uri NOT FOUND (LoadError)') +  end +  class OptionLoopFiles +    attr_reader :opt +    def initialize(opt) +      @opt=opt +      @r=Px[:lng_lst_rgx] +    end +    def loop_files_on_given_option +      @opt.files.each_with_index do |fno,i| +        @opt.fno,@opt.fns=fno,fno +        @opt.f_pth=@opt.f_pths[i] +        if fno !~/\.-sst$/ +          @opt.pth=@opt.paths[i] +          @opt.lng=@opt.lngs[i] +        end +        @@pwd=@opt.pth +        @opt.pth=@opt.f_pths[i][:pth] +        @opt.lng=@opt.f_pths[i][:lng] +        Dir.chdir(@opt.f_pth[:pth]) #watch +        SiSU_Env::FilenameLanguageCodeInsert.new(@opt,@opt.lng).language_code_insert # ... track +        @env=SiSU_Env::InfoEnv.new(fno) +        yield +      end +    end +    def loop_files_on_given_option_bundle +      @files_bundle={} +      @opt.files.each_with_index do |fno,i| +        fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') +        unless @files_bundle[fn_base_bundle] +          @files_bundle[fn_base_bundle]={ status: :todo } +        end +      end +      @opt.files.each_with_index do |fno,i| +        fn_base_bundle=fno.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') +        unless @files_bundle[fn_base_bundle][:status] == :done +          @files_bundle[fn_base_bundle][:status] = :done +          @opt.fns=fno +          @opt.fno=fno +          @opt.f_pth=@opt.f_pths[i] +          if fno !~/\.-sst$/ +            @opt.pth=@opt.paths[i] +            @opt.lng=@opt.lngs[i] +          end +          @@pwd=@opt.pth +          @opt.pth=@opt.f_pths[i][:pth] +          @opt.lng=@opt.f_pths[i][:lng] +          Dir.chdir(@opt.f_pth[:pth]) #watch +          @env=SiSU_Env::InfoEnv.new(fno) +          yield +        else next +        end +      end +    end +    def manifest_on_files_translated +      number_of_files={} +      @opt.files.each_with_index do |fns,i| +        fn=fns.gsub(/(?:~(?:#{@r}))?\.ss[tm]$/,'') +        (number_of_files[fn].is_a?(Array)) \ +        ? (number_of_files[fn] << i) +        : (number_of_files.store(fn,[i])) +      end +      files_translated_idx=[] +      number_of_files.each do |x| +        if x[1].length > 1 +          files_translated_idx << x[1] +        end +      end +      #files_translated_idx=number_of_files.select do |x| +      #  x[1] if x[1].length > 1 +      #end +      if files_translated_idx.flatten.length > 1 +        SiSU_Screen::Ansi.new( +          @opt.act[:color_state][:set], +          'Manifest re-run on (currently generated) translated files', +          '' +        ).grey_title_hi unless @opt.act[:quiet][:set] ==:on +        files_translated_idx.flatten.each do |i| +          @opt.fns=@opt.files[i] +          @opt.f_pth=@opt.f_pths[i] +          if @opt.fns =~/\.-sst$/ +            @opt.pth=Dir.pwd +            @opt.lng='en' +          elsif @opt.fno =~/\.txz$/ +            @opt.pth=@opt.f_pths[i][:pth] +            @opt.lng=@opt.f_pths[i][:lng] +          else +            @opt.pth=@opt.f_pths[i][:pth] +            @opt.lng=@opt.f_pths[i][:lng] +          end +          @@pwd=@opt.pth +          Dir.chdir(@opt.pth) #watch +          @env=SiSU_Env::InfoEnv.new(@opt.fns) +          yield +        end +      end +    end +  end +end +__END__ | 
