libxslt-ruby 0.8.2-x86-mswin32-60 → 0.9.0-x86-mswin32-60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. data/Rakefile +16 -37
  2. data/ext/libxslt/libxslt.c +3 -0
  3. data/ext/libxslt/libxslt.h +1 -1
  4. data/ext/libxslt/ruby_xslt_stylesheet.c +6 -6
  5. data/ext/libxslt/version.h +3 -3
  6. data/ext/mingw/Rakefile +18 -32
  7. data/ext/mingw/libexslt-0.dll +0 -0
  8. data/ext/mingw/libxslt-1.dll +0 -0
  9. data/ext/mingw/libxslt_ruby.so +0 -0
  10. data/ext/vc/libxslt_ruby.vcproj +2 -2
  11. data/test/files/commentary.dtd +34 -0
  12. data/{lib/text.xml → test/files/fuzface.xml} +154 -129
  13. data/test/files/fuzface.xsl +4 -0
  14. data/test/files/params.xml +2 -0
  15. data/test/files/params.xsl +11 -0
  16. data/test/files/ramblings.xsl +46 -0
  17. data/test/test_deprecated.rb +97 -0
  18. data/test/test_libxslt.rb +21 -0
  19. data/test/test_stylesheet.rb +108 -0
  20. data/test/test_suite.rb +3 -0
  21. metadata +19 -37
  22. data/doc/classes/LibXSLT.html +0 -126
  23. data/doc/classes/LibXSLT/XSLT.html +0 -196
  24. data/doc/classes/LibXSLT/XSLT/Stylesheet.html +0 -250
  25. data/doc/classes/LibXSLT/XSLT/TransformContext.html +0 -117
  26. data/doc/classes/LibXSLT/XSLTError.html +0 -131
  27. data/doc/classes/XSLT.html +0 -125
  28. data/doc/created.rid +0 -1
  29. data/doc/files/CHANGES.html +0 -204
  30. data/doc/files/LICENSE.html +0 -133
  31. data/doc/files/README.html +0 -302
  32. data/doc/files/ext/libxslt/libxslt_c.html +0 -101
  33. data/doc/files/ext/libxslt/ruby_xslt_stylesheet_c.html +0 -101
  34. data/doc/files/ext/libxslt/ruby_xslt_transform_context_c.html +0 -101
  35. data/doc/files/lib/libxslt/deprecated_rb.html +0 -101
  36. data/doc/files/lib/libxslt_rb.html +0 -116
  37. data/doc/files/lib/xslt_rb.html +0 -135
  38. data/doc/fr_class_index.html +0 -32
  39. data/doc/fr_file_index.html +0 -35
  40. data/doc/fr_method_index.html +0 -28
  41. data/doc/index.html +0 -24
  42. data/doc/rdoc-style.css +0 -208
  43. data/lib/libxslt-1.dll +0 -0
  44. data/lib/libxslt_ruby.so +0 -0
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ FILES = FileList[
18
18
  'ext/mingw/Rakefile',
19
19
  'ext/vc/*.sln',
20
20
  'ext/vc/*.vcproj',
21
- 'tests/**/*'
21
+ 'test/**/*'
22
22
  ]
23
23
 
24
24
  # Default GEM Specification
@@ -42,7 +42,7 @@ default_spec = Gem::Specification.new do |spec|
42
42
 
43
43
  spec.author = "Charlie Savage"
44
44
  spec.email = "libxml-devel@rubyforge.org"
45
- spec.add_dependency('libxml-ruby','>=0.8.2')
45
+ spec.add_dependency('libxml-ruby','>=0.9.0')
46
46
  spec.platform = Gem::Platform::RUBY
47
47
  spec.require_paths = ["lib", "ext/libxslt"]
48
48
 
@@ -62,39 +62,22 @@ end
62
62
  Rake::GemPackageTask.new(default_spec) do |pkg|
63
63
  pkg.package_dir = 'admin/pkg'
64
64
  pkg.need_tar = true
65
- pkg.need_zip = true
66
65
  end
67
66
 
68
- # ------- Windows Package ----------
69
- binaries = (FileList['ext/mingw/*.so',
70
- 'ext/mingw/*.dll'])
67
+ # ------- Windows GEM ----------
68
+ if RUBY_PLATFORM.match(/win32/)
69
+ binaries = (FileList['ext/mingw/*.so',
70
+ 'ext/mingw/*.dll*'])
71
71
 
72
- # Windows specification
73
- win_spec = default_spec.clone
74
- win_spec.extensions = []
75
- win_spec.platform = Gem::Platform::CURRENT
76
- win_spec.files += binaries.map {|binaryname| "lib/#{File.basename(binaryname)}"}
72
+ # Windows specification
73
+ win_spec = default_spec.clone
74
+ win_spec.extensions = ['ext/mingw/Rakefile']
75
+ win_spec.platform = Gem::Platform::CURRENT
76
+ win_spec.files += binaries.to_a
77
77
 
78
- desc "Create Windows Gem"
79
- task :create_win32_gem do
80
- # Copy the win32 extension built by MingW - easier to install
81
- # since there are no dependencies of msvcr80.dll
82
- current_dir = File.expand_path(File.dirname(__FILE__))
83
-
84
- binaries.each do |binaryname|
85
- target = File.join(current_dir, 'lib', File.basename(binaryname))
86
- cp(binaryname, target)
87
- end
88
-
89
- # Create the gem, then move it to pkg
90
- Gem::Builder.new(win_spec).build
91
- gem_file = "#{win_spec.name}-#{win_spec.version}-#{win_spec.platform}.gem"
92
- mv(gem_file, "admin/pkg/#{gem_file}")
93
-
94
- # Remove win extension from top level directory
95
- binaries.each do |binaryname|
96
- target = File.join(current_dir, 'lib', File.basename(binaryname))
97
- rm(target)
78
+ # Rake task to build the windows package
79
+ Rake::GemPackageTask.new(win_spec) do |pkg|
80
+ pkg.package_dir = 'admin/pkg'
98
81
  end
99
82
  end
100
83
 
@@ -115,15 +98,11 @@ Rake::RDocTask.new("rdoc") do |rdoc|
115
98
  'LICENSE')
116
99
  end
117
100
 
118
- task :package => :rdoc
119
- task :package => :create_win32_gem
120
- task :default => :package
121
101
 
122
102
  Rake::TestTask.new do |t|
123
103
  t.libs << "test"
124
104
  t.libs << "ext"
125
105
  end
126
106
 
127
- if not RUBY_PLATFORM.match(/mswin32/i)
128
- Rake::Task[:test].prerequisites << :extensions
129
- end
107
+ task :package => :rdoc
108
+ task :default => :package
@@ -61,4 +61,7 @@ Init_libxslt_ruby(void) {
61
61
 
62
62
  ruby_init_xslt_stylesheet();
63
63
  ruby_init_xslt_transform_context();
64
+
65
+ /* Now load exslt. */
66
+ exsltRegisterAll();
64
67
  }
@@ -19,7 +19,7 @@
19
19
  #include "ruby_xslt_stylesheet.h"
20
20
  #include "ruby_xslt_transform_context.h"
21
21
 
22
- #include "version.h"
22
+ #include "version.h"
23
23
 
24
24
  #if ((RUBY_LIBXML_VER_MAJ != RUBY_LIBXSLT_VER_MAJ) || (RUBY_LIBXML_VER_MIN != RUBY_LIBXSLT_VER_MIN))
25
25
  #error "Incompatible LibXML-Ruby headers - please install same major/micro version"
@@ -50,7 +50,7 @@ ruby_xslt_stylesheet_alloc(VALUE klass) {
50
50
  */
51
51
  VALUE
52
52
  ruby_xslt_stylesheet_initialize(VALUE self, VALUE document) {
53
- ruby_xml_document_t *rdocument;
53
+ xmlDocPtr xdoc;
54
54
  xmlDocPtr xcopy;
55
55
  xsltStylesheetPtr xstylesheet;
56
56
 
@@ -65,8 +65,8 @@ ruby_xslt_stylesheet_initialize(VALUE self, VALUE document) {
65
65
  * has to be updated to always check and see if the document is
66
66
  * still valid. That's all doable, but seems like a pain, so
67
67
  * just copy the document for now. */
68
- Data_Get_Struct(document, ruby_xml_document_t, rdocument);
69
- xcopy = xmlCopyDoc(rdocument->doc, 1);
68
+ Data_Get_Struct(document, xmlDoc, xdoc);
69
+ xcopy = xmlCopyDoc(xdoc, 1);
70
70
  xstylesheet = xsltParseStylesheetDoc(xcopy);
71
71
  xstylesheet->_private = (void *)self;
72
72
  DATA_PTR(self) = xstylesheet;
@@ -122,7 +122,7 @@ ruby_xslt_coerce_params(VALUE params) {
122
122
  */
123
123
  VALUE
124
124
  ruby_xslt_stylesheet_apply(int argc, VALUE *argv, VALUE self) {
125
- ruby_xml_document_t *rdocument;
125
+ xmlDocPtr xdoc;
126
126
  xsltStylesheetPtr xstylesheet;
127
127
  xmlDocPtr result;
128
128
  VALUE document;
@@ -145,10 +145,10 @@ ruby_xslt_stylesheet_apply(int argc, VALUE *argv, VALUE self) {
145
145
  rb_funcall(params, rb_intern("flatten!"), 0);
146
146
  pParams = ruby_xslt_coerce_params(params);
147
147
 
148
- Data_Get_Struct(document, ruby_xml_document_t, rdocument);
148
+ Data_Get_Struct(document, xmlDoc, xdoc);
149
149
  Data_Get_Struct(self, xsltStylesheet, xstylesheet);
150
150
 
151
- result = xsltApplyStylesheet(xstylesheet, rdocument->doc, (const char**)pParams);
151
+ result = xsltApplyStylesheet(xstylesheet, xdoc, (const char**)pParams);
152
152
 
153
153
  if (!result)
154
154
  rb_raise(eXSLTError, "Transformation failed");
@@ -1,5 +1,5 @@
1
- #define RUBY_LIBXSLT_VERSION "0.8.2"
1
+ #define RUBY_LIBXSLT_VERSION "0.9.0"
2
2
  #define RUBY_LIBXSLT_VERNUM 0
3
3
  #define RUBY_LIBXSLT_VER_MAJ 0
4
- #define RUBY_LIBXSLT_VER_MIN 8
5
- #define RUBY_LIBXSLT_VER_MIC 2
4
+ #define RUBY_LIBXSLT_VER_MIN 9
5
+ #define RUBY_LIBXSLT_VER_MIC 0
data/ext/mingw/Rakefile CHANGED
@@ -3,40 +3,26 @@
3
3
  # built with VC++ while here we want to build
4
4
  # with MingW. So just roll our own...
5
5
 
6
- require 'rubygems'
7
- require 'rake/clean'
6
+ require 'fileutils'
8
7
  require 'rbconfig'
9
8
 
10
- RUBY_INCLUDE_DIR = Config::CONFIG["archdir"]
11
- RUBY_BIN_DIR = Config::CONFIG["bindir"]
12
- RUBY_LIB_DIR = Config::CONFIG["libdir"]
13
- RUBY_SHARED_LIB = Config::CONFIG["LIBRUBY"]
14
- RUBY_SHARED_DLL = RUBY_SHARED_LIB.gsub(/lib$/, 'dll')
15
-
16
- EXTENSION_NAME = "libxslt_ruby.#{Config::CONFIG['DLEXT']}"
17
-
18
- gem_specs = Gem::SourceIndex.from_installed_gems.search('libxml-ruby')
19
- LIBXML_RUBY_DIR = gem_specs.sort_by {|spec| spec.version}.reverse.first.full_gem_path
20
-
21
- CLEAN.include('*.o')
22
- CLOBBER.include('libxslt.so')
23
-
24
- task :default => "libxslt"
25
-
26
- SRC = FileList['../libxslt/*.c']
27
- OBJ = SRC.collect do |file_name|
28
- File.basename(file_name).ext('o')
29
- end
30
-
31
- SRC.each do |srcfile|
32
- objfile = File.basename(srcfile).ext('o')
33
- file objfile => srcfile do
34
- command = "gcc -c -fPIC -O2 -Wall -o #{objfile} -I/usr/local/include -I../../rlibxml/ext #{srcfile} -I#{LIBXML_RUBY_DIR}/ext -I#{RUBY_INCLUDE_DIR}"
35
- sh "sh -c '#{command}'"
9
+ EXTENSION_NAME = "libxslt_ruby.#{Config::CONFIG["DLEXT"]}"
10
+
11
+ # This is called when the Windows GEM is installed!
12
+ task :install do
13
+ # Gems will pass these two environment variables:
14
+ # RUBYARCHDIR=#{dest_path}
15
+ # RUBYLIBDIR=#{dest_path}
16
+
17
+ dest_path = ENV['RUBYLIBDIR']
18
+
19
+ # Copy the extension
20
+ cp(EXTENSION_NAME, dest_path)
21
+
22
+ # Copy dllss
23
+ Dir.glob('*.dll').each do |dll|
24
+ cp(dll, dest_path)
36
25
  end
37
26
  end
38
27
 
39
- file "libxslt" => OBJ do
40
- command = "gcc -shared -o #{EXTENSION_NAME} -L#{LIBXML_RUBY_DIR}/lib -L/usr/local/lib #{OBJ} -lxml_ruby -lxslt -lxml2 #{RUBY_BIN_DIR}/#{RUBY_SHARED_DLL}"
41
- sh "sh -c '#{command}'"
42
- end
28
+ task :default => :install
Binary file
Binary file
Binary file
@@ -18,7 +18,7 @@
18
18
  <Configurations>
19
19
  <Configuration
20
20
  Name="Debug|Win32"
21
- OutputDirectory="C:\Development\ruby\lib\ruby\gems\1.8\gems\libxsl-ruby-0.8.2-x86-mswin32-60\lib"
21
+ OutputDirectory="C:\Development\ruby\lib\ruby\gems\1.8\gems\libxslt-ruby-0.8.2-x86-mswin32-60\lib"
22
22
  IntermediateDirectory="$(ConfigurationName)"
23
23
  ConfigurationType="2"
24
24
  CharacterSet="1"
@@ -63,7 +63,7 @@
63
63
  <Tool
64
64
  Name="VCLinkerTool"
65
65
  AdditionalDependencies="msvcrt-ruby18.lib libxml2.lib libxslt.lib libexslt.lib"
66
- OutputFile="C:\Development\ruby\lib\ruby\gems\1.8\gems\libxslt-ruby-0.7.1-x86-mswin32-60\lib\$(ProjectName).so"
66
+ OutputFile="C:\Development\ruby\lib\ruby\gems\1.8\gems\libxslt-ruby-0.8.3-x86-mswin32-60\lib\$(ProjectName).so"
67
67
  LinkIncremental="2"
68
68
  AdditionalLibraryDirectories="C:\Development\ruby\lib;C:\Development\msys\local\lib"
69
69
  GenerateDebugInformation="true"
@@ -0,0 +1,34 @@
1
+ <!ELEMENT commentary (meta, body)>
2
+ <!ELEMENT meta (author, version, date, id, title, subtitle?)>
3
+
4
+ <!-- Metadata about the requirements -->
5
+ <!ENTITY % string "#PCDATA">
6
+ <!ENTITY % character "#PCDATA">
7
+ <!ENTITY % letter "#PCDATA">
8
+ <!ENTITY % number_att "CDATA">
9
+
10
+
11
+ <!ELEMENT author (first_name, last_name, email)>
12
+
13
+ <!ELEMENT first_name (%string;)>
14
+ <!ELEMENT last_name (%string;)>
15
+ <!ELEMENT email (%string;)>
16
+
17
+ <!ELEMENT version (#PCDATA)>
18
+ <!ELEMENT date (#PCDATA)>
19
+ <!ELEMENT id (#PCDATA)>
20
+ <!ELEMENT title (#PCDATA)>
21
+ <!ELEMENT subtitle (#PCDATA)>
22
+
23
+ <!ELEMENT body (para+)>
24
+
25
+
26
+ <!ELEMENT para (#PCDATA|thought|url|ol)*>
27
+ <!ATTLIST para
28
+ style (default|ps) "default">
29
+
30
+ <!ELEMENT ol (li+)>
31
+ <!ELEMENT li (#PCDATA)>
32
+ <!ELEMENT url (#PCDATA)>
33
+ <!ELEMENT thought (#PCDATA)>
34
+
@@ -1,129 +1,154 @@
1
- <?xml version="1.0"?>
2
- <html><head><title>Ramblings - Fuzface... - The Internet's a big place and here's some proof...</title></head><body><h1>Fuzface...</h1><h3>The Internet's a big place and here's some proof...</h3>
3
- By: SeanChittenden<br/>
4
- Date: $Date: 2008-07-09 23:35:19 -0600 (Wed, 09 Jul 2008) $<br/>
5
- <p>
6
- I think it's a tragedy that I'm going to start off my new
7
- commentary by talking about facial hair and the Internet.
8
- Something about that just screams pathetic, but whatever: it's
9
- humor and that's life.
10
- </p>
11
-
12
- <p>
13
- I've been working at home for a while now, which has been great.
14
- I've been doing a lot of reading, good work, contributing to the
15
- FreeBSD project, and living life at my own pace. The problem?
16
- I don't have to interact with people, so I've let my appearance
17
- slide a bit, most notably I've gone two weeks without shaving
18
- and I have an awful hairy face.
19
- </p>
20
-
21
- <p>
22
- Nothing is worse than going for a hard run, coming back, and
23
- then bending your head down so that the hairs under your chin
24
- touch the hairs on your neck. This has to be one of the most
25
- disgusting/gross feelings I've experienced in a while. While
26
- today wasn't the first time I'd experienced such a slimy tangled
27
- mess, it is the first time I seriously considered shaving part
28
- of my face, but not all of it: I was considering a beard.
29
- </p>
30
-
31
- <p>
32
- Alright, so it's 5pm and I'm a sweaty post-run mess (it was 110
33
- degrees in direct sunlight according to my thermometer) and
34
- considering the possibility of growing a beard. Swifty nift?
35
- Maybe. This is something I'd never done before, let alone
36
- seriously consider. Normally I'd call my dad for such manly
37
- advice, but he is: a) normally in another state, and; b) in
38
- another country right now probably growing a beard (he's
39
- notorious for coming back from a trip with a gnarly unshaven
40
- face, sometimes he'll shape it into a decent beard). So, what's
41
- a tech-junkie to do? Hop on the Internet and see if Google's
42
- able to provide me with some inspiration.
43
- </p>
44
-
45
- <p>
46
- Sure enough, I typed in "pictures of bearded men" and I was able
47
- to find something: 14,000 pages of something to be exact.
48
- Anyway, so most of these were rinky dink sites, a few of them
49
- had some promise. One guy was trying to start a tradition where
50
- everyone grows a beard for New Years. As I was scrolling down
51
- the page trying to find some pictures, my mind was having the
52
- following thought process: <i>This seems like a dumb
53
- idea... New Years provides a perfectly good excuse to kiss some
54
- total stranger that you've had your eye on for the duration of a
55
- New Years party. Why waste such an opportunity with a crappy
56
- kiss?</i> And at about this point I said this page sucks,
57
- and flipped back to my search results.
58
- </p>
59
-
60
- <p>
61
- Since I'd never done this before, I didn't know what was
62
- fashionably correct in terms of where a guy should shave under
63
- his neck, or what the deal was... I knew there were lots of
64
- styles out there, just none that I could picture in my mind
65
- (save maybe Santa Claus and a few really gnarly beards that are
66
- long enough to be used as full-body covering. Oooh! And don't
67
- forget the Russian and Amish beards, those stand out in my mind
68
- too.). Google, being pretty comprehensive, and the Internet
69
- being huge, found the exact screwball page I was looking for:
70
- http://fuzface-gallery.tripod.com/
71
- </p>
72
-
73
- <p>
74
- I don't know if I really should be amazed at the sheer number of
75
- entries that Google returned, or that the Internet is big enough
76
- to house such random gallery of crap, but it is and it never
77
- ceases to amaze me... it's almost as amazing as the fact that
78
- some bozo spent the time to create such a page. Don't people
79
- have lives? Oh wait, I just visited his page... so back to my
80
- diatribe...
81
- </p>
82
-
83
- <p>
84
- There were tons of faces, lots of men, lots of hair, and plenty
85
- of styles to choose from. Page after page of faces and hair.
86
- Ugh. This wasn't getting any where and I was now entertaining
87
- the rebound though of shaving my head. Time to close my browser
88
- and hop in the shower: I reak. So what'd I do? Well, after
89
- looking through enough of those pictures, I decided a few
90
- things:
91
- </p>
92
-
93
- <p>
94
- <ol><li>
95
- I'm amazed that the Internet is big enough to foster the
96
- creation of such random and utterly useless information. Then
97
- again, I've been on and using the Net since '95, so this
98
- shouldn't surprise me that much.
99
- </li><li>
100
- There are a lot of guys out there with varying tastes in,
101
- shall we say, "facial hair styles," most of which I find
102
- pretty unappealing.
103
- </li><li>
104
- I don't like beards. After one clogged drain, two
105
- reapplications of shaving cream, and a few pases with the
106
- razor, it took me about 5-10 minutes to get a nice cleanly
107
- shaven face.
108
- </li><li>
109
- &lt;crass comment&gt;And - back me up here fellas, you can
110
- sympathize with this feeling after you get done looking
111
- through a magazine for a hair-cut style (ladies.. just smile
112
- and nod and pretend you care) - after looking at a few dozen
113
- pictures of men, I was able to safely reaffirm my desire for
114
- heterosexual relations (translation from Bill Clintonese: have
115
- sex with a woman). And with that thought in mind, I began to
116
- pine for the college porn collection of old. Mmmm,
117
- Playboy.&lt;/crass comment&gt;
118
- </li></ol>
119
- </p>
120
-
121
- <p>
122
- ::grin:: Until next time. -Sean
123
- </p>
124
-
125
- <p>
126
- P.S. To the guys out there with beards, this is just my
127
- opinion: take it with a grain of salt.
128
- </p>
129
- </body></html>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <?xml-stylesheet href="fuzface.xsl" type="text/xsl"?>
3
+
4
+ <!DOCTYPE commentary SYSTEM "commentary.dtd">
5
+
6
+ <commentary>
7
+ <meta>
8
+ <author>
9
+ <first_name>Sean</first_name>
10
+ <last_name>Chittenden</last_name>
11
+ <email>sean@chittenden.org</email>
12
+ </author>
13
+ <version>$Version$</version>
14
+ <date>$Date: 2008-07-09 23:35:19 -0600 (Wed, 09 Jul 2008) $</date>
15
+ <id>$Id: fuzface.xml 58 2008-07-10 05:35:19Z cfis $</id>
16
+ <title>Fuzface...</title>
17
+ <subtitle>The Internet's a big place and here's some proof...</subtitle>
18
+ </meta>
19
+
20
+ <body>
21
+ <para>
22
+ I think it's a tragedy that I'm going to start off my new
23
+ commentary by talking about facial hair and the Internet.
24
+ Something about that just screams pathetic, but whatever: it's
25
+ humor and that's life.
26
+ </para>
27
+
28
+ <para>
29
+ I've been working at home for a while now, which has been great.
30
+ I've been doing a lot of reading, good work, contributing to the
31
+ FreeBSD project, and living life at my own pace. The problem?
32
+ I don't have to interact with people, so I've let my appearance
33
+ slide a bit, most notably I've gone two weeks without shaving
34
+ and I have an awful hairy face.
35
+ </para>
36
+
37
+ <para>
38
+ Nothing is worse than going for a hard run, coming back, and
39
+ then bending your head down so that the hairs under your chin
40
+ touch the hairs on your neck. This has to be one of the most
41
+ disgusting/gross feelings I've experienced in a while. While
42
+ today wasn't the first time I'd experienced such a slimy tangled
43
+ mess, it is the first time I seriously considered shaving part
44
+ of my face, but not all of it: I was considering a beard.
45
+ </para>
46
+
47
+ <para>
48
+ Alright, so it's 5pm and I'm a sweaty post-run mess (it was 110
49
+ degrees in direct sunlight according to my thermometer) and
50
+ considering the possibility of growing a beard. Swifty nift?
51
+ Maybe. This is something I'd never done before, let alone
52
+ seriously consider. Normally I'd call my dad for such manly
53
+ advice, but he is: a) normally in another state, and; b) in
54
+ another country right now probably growing a beard (he's
55
+ notorious for coming back from a trip with a gnarly unshaven
56
+ face, sometimes he'll shape it into a decent beard). So, what's
57
+ a tech-junkie to do? Hop on the Internet and see if Google's
58
+ able to provide me with some inspiration.
59
+ </para>
60
+
61
+ <para>
62
+ Sure enough, I typed in "pictures of bearded men" and I was able
63
+ to find something: 14,000 pages of something to be exact.
64
+ Anyway, so most of these were rinky dink sites, a few of them
65
+ had some promise. One guy was trying to start a tradition where
66
+ everyone grows a beard for New Years. As I was scrolling down
67
+ the page trying to find some pictures, my mind was having the
68
+ following thought process: <thought>This seems like a dumb
69
+ idea... New Years provides a perfectly good excuse to kiss some
70
+ total stranger that you've had your eye on for the duration of a
71
+ New Years party. Why waste such an opportunity with a crappy
72
+ kiss?</thought> And at about this point I said this page sucks,
73
+ and flipped back to my search results.
74
+ </para>
75
+
76
+ <para>
77
+ Since I'd never done this before, I didn't know what was
78
+ fashionably correct in terms of where a guy should shave under
79
+ his neck, or what the deal was... I knew there were lots of
80
+ styles out there, just none that I could picture in my mind
81
+ (save maybe Santa Claus and a few really gnarly beards that are
82
+ long enough to be used as full-body covering. Oooh! And don't
83
+ forget the Russian and Amish beards, those stand out in my mind
84
+ too.). Google, being pretty comprehensive, and the Internet
85
+ being huge, found the exact screwball page I was looking for:
86
+ <url>http://fuzface-gallery.tripod.com/</url>
87
+ </para>
88
+
89
+ <para>
90
+ I don't know if I really should be amazed at the sheer number of
91
+ entries that Google returned, or that the Internet is big enough
92
+ to house such random gallery of crap, but it is and it never
93
+ ceases to amaze me... it's almost as amazing as the fact that
94
+ some bozo spent the time to create such a page. Don't people
95
+ have lives? Oh wait, I just visited his page... so back to my
96
+ diatribe...
97
+ </para>
98
+
99
+ <para>
100
+ There were tons of faces, lots of men, lots of hair, and plenty
101
+ of styles to choose from. Page after page of faces and hair.
102
+ Ugh. This wasn't getting any where and I was now entertaining
103
+ the rebound though of shaving my head. Time to close my browser
104
+ and hop in the shower: I reak. So what'd I do? Well, after
105
+ looking through enough of those pictures, I decided a few
106
+ things:
107
+ </para>
108
+
109
+ <para>
110
+ <ol>
111
+ <li>
112
+ I'm amazed that the Internet is big enough to foster the
113
+ creation of such random and utterly useless information. Then
114
+ again, I've been on and using the Net since '95, so this
115
+ shouldn't surprise me that much.
116
+ </li>
117
+
118
+ <li>
119
+ There are a lot of guys out there with varying tastes in,
120
+ shall we say, "facial hair styles," most of which I find
121
+ pretty unappealing.
122
+ </li>
123
+
124
+ <li>
125
+ I don't like beards. After one clogged drain, two
126
+ reapplications of shaving cream, and a few pases with the
127
+ razor, it took me about 5-10 minutes to get a nice cleanly
128
+ shaven face.
129
+ </li>
130
+
131
+ <li>
132
+ &lt;crass comment&gt;And - back me up here fellas, you can
133
+ sympathize with this feeling after you get done looking
134
+ through a magazine for a hair-cut style (ladies.. just smile
135
+ and nod and pretend you care) - after looking at a few dozen
136
+ pictures of men, I was able to safely reaffirm my desire for
137
+ heterosexual relations (translation from Bill Clintonese: have
138
+ sex with a woman). And with that thought in mind, I began to
139
+ pine for the college porn collection of old. Mmmm,
140
+ Playboy.&lt;/crass comment&gt;
141
+ </li>
142
+ </ol>
143
+ </para>
144
+
145
+ <para>
146
+ ::grin:: Until next time. -Sean
147
+ </para>
148
+
149
+ <para style="ps">
150
+ P.S. To the guys out there with beards, this is just my
151
+ opinion: take it with a grain of salt.
152
+ </para>
153
+ </body>
154
+ </commentary>