File: value/core/dir.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Umu#6
  module: Value#8
  module: Core#10
has properties
function: make_dir / 1 #82
  class: Dir#12
inherits from
  Object ( Umu::Value::Core )
has properties
attribute: obj [R] #13
method: initialize / 1 #16
method: to_s #25
method: meth_seen / 3 #35
method: meth_to_string / 3 #47
constant: FN_DEST #52
method: meth_each / 3 #73

Class Hierarchy

Object ( Builtin-Module )
Top ( Umu::Value::Core )
Object ( Umu::Value::Core )
  Dir    #12

Code

   1  # coding: utf-8
   2  # frozen_string_literal: true
   3 
   4 
   5 
   6  module Umu
   7 
   8  module Value
   9 
  10  module Core
  11 
  12  class Dir < Object
  13      attr_reader :obj
  14 
  15 
  16      def initialize(obj)
  17          ASSERT.kind_of obj, ::Dir
  18 
  19          super()
  20 
  21          @obj = obj
  22      end
  23 
  24 
  25      def to_s
  26          format "#Dir<\"%s\">", self.obj.path
  27      end
  28 
  29 
  30      define_instance_method(
  31          :meth_seen,
  32          :seen, [],
  33          [], VC::Unit
  34      )
  35      def meth_seen(_loc, _env, _event)
  36          self.obj.close
  37 
  38          VC.make_unit
  39      end
  40 
  41 
  42      define_instance_method(
  43          :meth_to_string,
  44          :'to-s', [],
  45          [], VCA::String
  46      )
  47      def meth_to_string(_loc, _env, _event)
  48          VC.make_string self.obj.path
  49      end
  50 
  51 
  52      FN_DEST = lambda { |dir|
  53              s = dir.obj.read
  54              unless s
  55                 raise ::StopIteration
  56              end
  57 
  58              str_val = VC.make_string s.chomp
  59 
  60              VC.make_some(
  61                  VC.make_tuple(
  62                      str_val,
  63                      VC.make_enumerator(dir, FN_DEST)
  64                  )
  65              )
  66          }
  67 
  68      define_instance_method(
  69          :meth_each,
  70          :'each', [],
  71          [], VCM::Enum::Abstract
  72      )
  73      def meth_each(_loc, _env, _event)
  74          VC.make_enumerator self, FN_DEST
  75      end
  76  end
  77  Dir.freeze
  78 
  79 
  80  module_function
  81 
  82      def make_dir(obj)
  83          ASSERT.kind_of obj, ::Dir
  84 
  85          Dir.new(obj).freeze
  86      end
  87 
  88  end # Umu::Value::Core
  89 
  90  end # Umu::Value
  91 
  92  end # Umu