Newer
Older
3D_Braille / 3D_Braille / wakachi.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

ENV['MECAB_PATH']='/usr/lib/x86_64-linux-gnu/libmecab.so'
require './kana_Braille.rb'     
require 'natto'

def MecabNatto(str,text,gana,kana,seion,english,alphabet,upper,lower)
  
  natto = Natto::MeCab.new
  natto.parse(text) do |phrase|
    #pharse=mecabで形態素解析したもの
    morpheme = phrase.feature.split(',')
    #pharase.feature=mecabを使用した結果を表示する。「,」で区切られていて「,」ごとに配列化したものがmorphemeに入る
    
    if morpheme[0]=="BOS/EOS" #BOSは文頭を表し、EOSは文末を表す。
      #morpheme[0]にBOS/EOSが含まれていたら空白を表示するよう指示
      str+=""
    else
      
      #辞書内に該当する文字がなければmecabは*を返すためその際の例外処理
      if morpheme[-1]=="*" 
        al_str=phrase.surface
        #phrase.surfaceは元の文字をそのまま返す
        
        #アルファベットが含まれているときの条件分岐 start
        if upper.include?(al_str[0])==true || lower.include?(al_str[0])==true
          i=0
          youshori="#{alphabet["外"][0]}"
          while i<al_str.length
            if upper.include?(al_str[i])==true
              youshori+="#{alphabet[al_str[i]][0]}"
              youshori+="#{alphabet[al_str[i]][1]}"
            else lower.include?(al_str[i])==true
              youshori+="#{alphabet[al_str[i]][0]}"
            end
            i+=1
          end
        #アルファベットが含まれているときの条件分岐 end

        #辞書内に無い文字への対応
        else
          #exit 1
          sin="ヨメナイ" #要改善
          youshori=contracted(sin,gana)
        end
        
      else
        youshori=contracted(morpheme[-1],gana)
      end
      
      for chara in youshori.split("")
        #p chara
        if chara==(" ") #空白があったら空白を出す
          str+=""
        elsif seion.include?(chara)==false && english.include?(chara)==false 
          str+="#{kana[chara][1]}#{kana[chara][0]}"
        else
          str+="#{chara}"
        end
      end
    end
  end
  str
end


def sutem(suuu,suji,sufu)
  j=0
  for num in suuu.split("")
    j+=1
    if j==1      
      suji+="#{sufu}#{num}"
    else
      suji+="#{num}"
    end
  end
  suji
end