##// END OF EJS Templates
defined __repr__ for FileLink and FileLinks. this now presents the absolute path when run from an ipython session, and a link when run from the HTML notebook
Greg Caporaso -
Show More
@@ -1,146 +1,151
1 1 """Various display related classes.
2 2
3 3 Authors : MinRK, gregcaporaso
4 4 """
5 5
6 6 from os import walk
7 from os.path import exists, isfile, splitext
7 from os.path import exists, isfile, splitext, abspath
8 8
9 9
10 10 class YouTubeVideo(object):
11 11 """Class for embedding a YouTube Video in an IPython session, based on its video id.
12 12
13 13 e.g. to embed the video on this page:
14 14
15 15 http://www.youtube.com/watch?v=foo
16 16
17 17 you would do:
18 18
19 19 vid = YouTubeVideo("foo")
20 20 display(vid)
21 21 """
22 22
23 23 def __init__(self, id, width=400, height=300):
24 24 self.id = id
25 25 self.width = width
26 26 self.height = height
27 27
28 28 def _repr_html_(self):
29 29 """return YouTube embed iframe for this video id"""
30 30 return """
31 31 <iframe
32 32 width="%i"
33 33 height="%i"
34 34 src="http://www.youtube.com/embed/%s"
35 35 frameborder="0"
36 36 allowfullscreen
37 37 ></iframe>
38 38 """%(self.width, self.height, self.id)
39 39
40 40 class FileLink(object):
41 41 """Class for embedding a local file link in an IPython session, based on path
42 42
43 43 e.g. to embed a link that was generated in the IPython notebook as my/data.txt
44 44
45 45 you would do:
46 46
47 47 local_file = FileLink("my/data.txt")
48 48 display(local_file)
49 49
50 50 or in the HTML notebook, just
51 51
52 52 FileLink("my/data.txt")
53 53 """
54 54
55 link_str = "<a href='%s' target='_blank'>%s</a>"
55 html_link_str = "<a href='%s' target='_blank'>%s</a>"
56 56
57 57 def __init__(self,
58 58 path,
59 59 url_prefix='files',
60 60 result_html_prefix='',
61 61 result_html_suffix='<br>'):
62 62 """
63 63 path : path to the file or directory that should be formatted
64 64 directory_prefix : prefix to be prepended to all files to form a
65 65 working link [default: 'files']
66 66 result_html_prefix : text to append to beginning to link
67 67 [default: none]
68 68 result_html_suffix : text to append at the end of link
69 69 [default: '<br>']
70 70 """
71 71 self.path = path
72 72 self.url_prefix = url_prefix
73 73 self.result_html_prefix = result_html_prefix
74 74 self.result_html_suffix = result_html_suffix
75 75
76 76 def _format_path(self):
77 77 fp = '/'.join([self.url_prefix,self.path])
78 78 return ''.join([self.result_html_prefix,
79 self.link_str % (fp, self.path),
79 self.html_link_str % (fp, self.path),
80 80 self.result_html_suffix])
81 81
82 82 def _repr_html_(self):
83 """return link to local file
83 """return html link to file
84 84 """
85 85 if not exists(self.path):
86 86 return ("Path (<tt>%s</tt>) doesn't exist. "
87 87 "It may still be in the process of "
88 88 "being generated, or you may have the "
89 89 "incorrect path." % self.path)
90 90
91 91 return self._format_path()
92 92
93 def __repr__(self):
94 """return path to file
95 """
96 return abspath(self.path)
97
93 98 # Create an alias for formatting a single directory name as a link.
94 99 # Right now this is the same as a formatting for a single file, but
95 # we'll encorage users to reference these with a different class in
100 # we'll encourage users to reference these with a different class in
96 101 # case we want to change this in the future.
97 102 DirectoryLink = FileLink
98 103
99 104 class FileLinks(FileLink):
100 105 """Class for embedding local file links in an IPython session, based on path
101 106
102 107 e.g. to embed links to files that were generated in the IPython notebook under my/data
103 108
104 109 you would do:
105 110
106 111 local_files = FileLinks("my/data")
107 112 display(local_files)
108 113
109 114 or in the HTML notebook, just
110 115
111 116 FileLinks("my/data")
112 117
113 118 """
114 119 def __init__(self,
115 120 path,
116 121 url_prefix='files',
117 122 included_suffixes=None,
118 123 result_html_prefix='',
119 124 result_html_suffix='<br>'):
120 125 """
121 126 included_suffixes : list of filename suffixes to include when
122 127 formatting output [default: include all files]
123 128
124 129 See the FileLink (baseclass of LocalDirectory) docstring for
125 130 information on additional parameters.
126 131 """
127 132 self.included_suffixes = included_suffixes
128 133 FileLink.__init__(self,
129 134 path,
130 135 url_prefix,
131 136 result_html_prefix,
132 137 result_html_suffix)
133 138
134 139 def _format_path(self):
135 140 result_entries = []
136 141 for root, dirs, files in walk(self.path):
137 142 for fn in files:
138 fp = join(self.url_prefix,root,fn)
143 fp = '/'.join([self.url_prefix,root,fn])
139 144 # if all files are being included, or fp has a suffix
140 145 # that is in included_suffix, create a link to fp
141 146 if self.included_suffixes == None or \
142 147 splitext(fn)[1] in self.included_suffixes:
143 148 result_entries.append(''.join([self.result_html_prefix,
144 self.link_str % (fp,fn),
149 self.html_link_str % (fp,fn),
145 150 self.result_html_suffix]))
146 151 return '\n'.join(result_entries)
General Comments 0
You need to be logged in to leave comments. Login now