diff options
Diffstat (limited to 'lib/sisu/develop/manpage.rb')
| -rw-r--r-- | lib/sisu/develop/manpage.rb | 100 | 
1 files changed, 24 insertions, 76 deletions
| diff --git a/lib/sisu/develop/manpage.rb b/lib/sisu/develop/manpage.rb index 2d46a229..75d4c360 100644 --- a/lib/sisu/develop/manpage.rb +++ b/lib/sisu/develop/manpage.rb @@ -63,10 +63,12 @@ module SiSU_Manpage      include SiSU_ManpageFormat    require_relative 'shared_metadata'                    # shared_metadata.rb    require_relative 'generic_parts'                      # generic_parts.rb +  require_relative 'txt_read'                           # txt_read.rb    require_relative 'txt_shared'                         # txt_shared.rb -  @@alt_id_count,@@alt_id_count,@@tablehead,@@number_of_cols=0,0,0,0 +  @@alt_id_count,@@alt_id_count=0,0    @@tablefoot=''    class Source +    include SiSU_Txt_Read      def initialize(opt)        @opt=opt        if @opt.fns =~/(.+?)\.(?:-|ssm\.)?sst$/ @@ -77,37 +79,14 @@ module SiSU_Manpage      end      def read        begin -        @md=SiSU_Param::Parameters.new(@opt).get -        @env=SiSU_Env::InfoEnv.new(@opt.fns) -        tool=(@opt.act[:verbose][:set]==:on \ -        || @opt.act[:verbose_plus][:set]==:on \ -        || @opt.act[:maintenance][:set]==:on) \ -        ?  "#{@env.program.text_editor} #{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}" -        : "[#{@opt.f_pth[:lng_is]}] #{@opt.fno}" -        (@opt.act[:verbose][:set]==:on \ -        || @opt.act[:verbose_plus][:set]==:on \ -        || @opt.act[:maintenance][:set]==:on) \ -        && @opt.act[:quiet][:set]==:on \ -        ? SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            'Manpage', -            tool -          ).green_hi_blue -        : SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            'Manpage', -            tool -          ).green_title_hi -        if (@opt.act[:verbose_plus][:set]==:on \ -        || @opt.act[:maintenance][:set]==:on) -          SiSU_Screen::Ansi.new( -            @opt.act[:color_state][:set], -            @opt.fns, -            "#{@md.file.output_path.manpage.dir}/#{@md.file.base_filename.manpage}" -          ).flow -        end -        @ao_array=SiSU_AO::Source.new(@opt).get # ao file drawn here -        SiSU_Manpage::Source::Scroll.new(@md,@ao_array).songsheet +        md=SiSU_Param::Parameters.new(@opt).get +        specific={ +          description:     'Manpage', +          output_path:     md.file.output_path.manpage.dir, +          output_file:     md.file.base_filename.manpage, +        } +        read_generic(@opt,specific) +        SiSU_Manpage::Source::Scroll.new(md,@ao_array,@wrap_width).songsheet        rescue          SiSU_Errors::Rescued.new($!,$@,@opt.selections.str,@opt.fns).location do            __LINE__.to_s + ':' + __FILE__ @@ -121,8 +100,8 @@ module SiSU_Manpage        include SiSU_Parts_Generic        include SiSU_TextUtils        @@endnotes={ para: [], end: [] } -      def initialize(md,data) -        @md,@data=md,data +      def initialize(md,data,wrap_width) +        @md,@data,@wrap_width=md,data,wrap_width          @tab="\t"          @@notes=:end          @manpage={ body: [], open: [], close: [], head: [], metadata: [], tail: [], endnotes: [] } @@ -153,8 +132,8 @@ module SiSU_Manpage          notes=@n.flatten          notes.each do |e|            util=(e.to_s =~/^\[[\d*+]+\]:/) \ -          ? (SiSU_TextUtils::Wrap.new(e.to_s,78,4,1)) -          : (SiSU_TextUtils::Wrap.new(e.to_s,78,0,1)) +          ? (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,4,1)) +          : (SiSU_TextUtils::Wrap.new(e.to_s,@wrap_width,0,1))            wrap=util.line_wrap            wrap=if wrap =~ /^\s*[\d*+]+\s+.+?\s*\Z/m              wrap.gsub(/(^| |#{Mx[:nbsp]}|\s|\*)\\\*/,'\1\\\\\*'). #man page requires @@ -219,19 +198,19 @@ WOK              if dob.indent =~/[1-9]/ \              and dob.indent == dob.hang                util=if dob.bullet_ -                SiSU_TextUtils::Wrap.new("* #{paragraph}",78,dob.indent.to_i*2) -              else SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2) +                SiSU_TextUtils::Wrap.new("* #{paragraph}",@wrap_width,dob.indent.to_i*2) +              else SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,dob.indent.to_i*2)                end              elsif dob.hang =~/[0-9]/ \              and dob.indent != dob.hang                     # NOT yet implemented -              util=SiSU_TextUtils::Wrap.new(paragraph,78,dob.indent.to_i*2) +              util=SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,dob.indent.to_i*2)              else                util=if dob.bullet_ -                SiSU_TextUtils::Wrap.new("* #{paragraph}",78,0) -              else SiSU_TextUtils::Wrap.new(paragraph,78,0) +                SiSU_TextUtils::Wrap.new("* #{paragraph}",@wrap_width,0) +              else SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,0)                end              end -          else util=SiSU_TextUtils::Wrap.new(paragraph,78,0) +          else util=SiSU_TextUtils::Wrap.new(paragraph,@wrap_width,0)            end            w=util.line_wrap            w=w.gsub(/^(\\\.)/,' \1') @@ -239,7 +218,7 @@ WOK          end          if lv            times=wrapped.length -          times=78 if times > 78 +          times=@wrap_width if times > @wrap_width            @manpage[:body] << case lv            when 0    then '.SH ' << wrapped.upcase << break_line << break_line            when 1..3 then '.SH ' << wrapped.upcase << break_line << break_line @@ -387,42 +366,11 @@ WOK          content << @@endnotes[:end] if @@notes==:end          content << manpage[:metadata]          content << manpage[:tail] -        Output.new(@md,content).manpage +        outputfile=SiSU_Env::FileOp.new(@md).write_file.manpage +        Txt_Output::Output.new.document(content,outputfile)          @@endnotes={ para: [], end: [] }        end      end -    class Output <Source -      include SiSU_Param -      include SiSU_Env -      def initialize(md,content) -        @md,@content=md,content -      end -      def manpage                                                            #%manpage output -        SiSU_Env::FileOp.new(@md).mkdir -        filename_manpage=SiSU_Env::FileOp.new(@md).write_file.manpage -        @sisu=[] -        emptyline=0 -        @content.each do |para|                                                # this is a hack -          if para.is_a?(Array) \ -          and para.length > 0 -            para.each do |line| -              if line -                line=line.gsub(/[ \t]+$/m,''). -                  gsub(/^\A[ ]*\Z/m,'') -                (line=~/^\A\Z/) \ -                ? (emptyline+=1) -                : emptyline=0 -                if emptyline < 2                     #remove additional empty lines -                  filename_manpage.puts line           #unix manpage -                end -              end -            end -          else filename_manpage.puts para          #unix manpage # /^([*=-]|\.){5}/ -          end -        end -        filename_manpage.close -      end -    end    end  end  __END__ | 
