summary refs log blame commit diff stats
path: root/doc/pydoc/ranger.ext.html
blob: 06848c5d6f18c501088ad7c94efbb3a1ba060535 (plain) (tree)




























                                                                                                                                                                                                             
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: package ranger.ext</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body bgcolor="#f0f0f8">

<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="ranger.html"><font color="#ffffff">ranger</font></a>.ext</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/hut/work/ranger/ranger/ext/__init__.py">/home/hut/work/ranger/ranger/ext/__init__.py</a></font></td></tr></table>
    <p><tt>This&nbsp;package&nbsp;includes&nbsp;extensions&nbsp;with&nbsp;broader&nbsp;usability</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
    
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="ranger.ext.accumulator.html">accumulator</a><br>
<a href="ranger.ext.debug.html">debug</a><br>
</td><td width="25%" valign=top><a href="ranger.ext.get_all_modules.html">get_all_modules</a><br>
<a href="ranger.ext.human_readable.html">human_readable</a><br>
</td><td width="25%" valign=top><a href="ranger.ext.openstruct.html">openstruct</a><br>
<a href="ranger.ext.relpath.html">relpath</a><br>
</td><td width="25%" valign=top><a href="ranger.ext.shutil_generatorized.html">shutil_generatorized</a><br>
<a href="ranger.ext.waitpid_no_intr.html">waitpid_no_intr</a><br>
</td></tr></table></td></tr></table>
</body></html>
ss='alt'>
4f3510d0 ^

760f683f ^
dd660682 ^
4f3510d0 ^
050a93ac ^


760f683f ^
77d5b5d6 ^
4a48bedc ^
85b2f61b ^
7a84094a ^
ea19d0dc ^
7a84094a ^
748b6865 ^



8fb0e672 ^

760f683f ^
77d5b5d6 ^
4a48bedc ^
85b2f61b ^
7a84094a ^
a0331a9b ^
7a84094a ^
104854ca ^
8fb0e672 ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

                                            
           
                

 
                                                     
             
             
                       
                                      

                                         

 
                                                   
             
             
                  
                                 

 
                                                                            
             
             
                                              
                      
                                  
                                     
                      
                                          

                        
                                          
                              
   




                                   
                                                         
             
             
                                              
                           
                                  
                                     
                      
                                          

                        
                                          
                              
   


                         
                                                                 
             
             
                                                   
                                  
                                
                                              



                                        

 
                                                     
             
             
                                                              
                                  
                                     
                      
                                     
 
# new type to help incrementally scan arrays
container stream:_elem [
  index:num
  data:&:@:_elem
]

def new-stream s:&:@:_elem -> result:&:stream:_elem [
  local-scope
  load-inputs
  return-unless s, null
  result <- new {(stream _elem): type}
  *result <- put *result, index:offset, 0
  *result <- put *result, data:offset, s
]

def rewind in:&:stream:_elem -> in:&:stream:_elem [
  local-scope
  load-inputs
  return-unless in
  *in <- put *in, index:offset, 0
]

def read in:&:stream:_elem -> result:_elem, empty?:bool, in:&:stream:_elem [
  local-scope
  load-inputs
  assert in, [cannot read; stream has no data]
  empty? <- copy false
  idx:num <- get *in, index:offset
  s:&:@:_elem <- get *in, data:offset
  len:num <- length *s
  at-end?:bool <- greater-or-equal idx len
  {
    break-unless at-end?
    empty-result:&:_elem <- new _elem:type
    return *empty-result, true
  }
  result <- index *s, idx
  idx <- add idx, 1
  *in <- put *in, index:offset, idx
]

def peek in:&:stream:_elem -> result:_elem, empty?:bool [
  local-scope
  load-inputs
  assert in, [cannot peek; stream has no data]
  empty?:bool <- copy false
  idx:num <- get *in, index:offset
  s:&:@:_elem <- get *in, data:offset
  len:num <- length *s
  at-end?:bool <- greater-or-equal idx len
  {
    break-unless at-end?
    empty-result:&:_elem <- new _elem:type
    return *empty-result, true
  }
  result <- index *s, idx
]

def read-line in:&:stream:char -> result:text, in:&:stream:char [
  local-scope
  load-inputs
  assert in, [cannot read-line; stream has no data]
  idx:num <- get *in, index:offset
  s:text <- get *in, data:offset
  next-idx:num <- find-next s, 10/newline, idx
  result <- copy-range s, idx, next-idx
  idx <- add next-idx, 1  # skip newline
  # write back
  *in <- put *in, index:offset, idx
]

def end-of-stream? in:&:stream:_elem -> result:bool [
  local-scope
  load-inputs
  assert in, [cannot check end-of-stream?; stream has no data]
  idx:num <- get *in, index:offset
  s:&:@:_elem <- get *in, data:offset
  len:num <- length *s
  result <- greater-or-equal idx, len
]