From: S P. <ski...@ea...> - 2006-04-24 09:40:34
|
I thought I'd try extending the current type handling before critiquing it. So this patch adds support for mass, i.e. Attribute:Mass [[has type::Type:Mass]] instead of the current [[has type::Type:Float]]. It was pretty straightforward to extend SMW_DT_Float.php, well done. I created a test page for it, http://wiki.ontoworld.org/wiki/Test_Units , which passes on my local codebase. A few questions/notes. * I made the default units kg, per http://en.wikipedia.org/wiki/SI. * I don't understand the getUnits() implementation, does anything actually use it? * Is the intent of the getUnits() function to communicate to users the supported units for a type? Please flame away at any thing large or small. I don't even know what "PHP" means! -- =S Page Index: SMW_LanguageEn.php =================================================================== RCS file: /cvsroot/semediawiki/SemanticMediaWiki/languages/SMW_LanguageEn.php,v retrieving revision 1.10 diff -u -r1.10 SMW_LanguageEn.php --- SMW_LanguageEn.php 29 Mar 2006 14:01:14 -0000 1.10 +++ SMW_LanguageEn.php 24 Apr 2006 09:22:13 -0000 @@ -84,6 +84,7 @@ 'smw_geolength' => 'Geographic length', // name of the geolength type 'smw_geoarea' => 'Geographic area', // name of the geoarea type 'smw_geocoordinate' => 'Geographic coordinate', // name of the geocoord type + 'smw_mass' => 'Mass', // name of the mass type ); /* private */ var $smwSpecialProperties = array( Index: SMW_LanguageDe.php =================================================================== RCS file: /cvsroot/semediawiki/SemanticMediaWiki/languages/SMW_LanguageDe.php,v retrieving revision 1.15 diff -u -r1.15 SMW_LanguageDe.php --- SMW_LanguageDe.php 29 Mar 2006 14:04:31 -0000 1.15 +++ SMW_LanguageDe.php 24 Apr 2006 09:28:17 -0000 @@ -84,6 +84,7 @@ 'smw_geolength' => 'Geografische Länge', // name of the geolength type 'smw_geoarea' => 'Geografische Fläche', // name of the geoarea type 'smw_geocoordinate' => 'Geografische Koordinaten', // name of the geocoord type + 'smw_mass' => 'Masse', // name of the mass type ); /* private */ var $smwSpecialProperties = array( Index: SMW_DT_Float.php =================================================================== RCS file: /cvsroot/semediawiki/SemanticMediaWiki/includes/SMW_DT_Float.php,v retrieving revision 1.1 diff -u -r1.1 SMW_DT_Float.php --- SMW_DT_Float.php 25 Mar 2006 10:08:17 -0000 1.1 +++ SMW_DT_Float.php 24 Apr 2006 09:09:38 -0000 @@ -10,6 +10,8 @@ new SMWFloatTypeHandler('SMWConvertGeographicArea','geoarea')); SMWRegisterTypeHandler($SMW_ContLang->getDatatypeLabel('smw_geolength'), new SMWFloatTypeHandler('SMWConvertGeographicLength','geolength')); +SMWRegisterTypeHandler($SMW_ContLang->getDatatypeLabel('smw_mass'), + new SMWFloatTypeHandler('SMWConvertMass','mass')); /** * Class for managing floating point types. Parses floating point @@ -66,6 +68,7 @@ $result=Array(); $result['TYPE']=$this->typeid; // strip kilo separators and split off number from the rest: + ## TODO: this regexp is also in FloatTypeHandler, should move to common. $arr= preg_split('/([-+]?[\d]+[' . wfMsgForContent('smw_decseparator') . ']?[\d]*)[ ]*/', str_replace(wfMsgForContent('smw_kiloseparator'), '', $v), 2, PREG_SPLIT_DELIM_CAPTURE); $arr[1] = str_replace(wfMsgForContent('smw_decseparator'), '.', $arr[1]); @@ -162,13 +165,14 @@ /*** Input: $value -- numerical value, $unit -- unit string ** *** $value can be FALSE to indicate that only the ** *** mandatory keys are required ** - *** Outut: array with optional keys ** + *** Output: array with optional keys ** *** 'ERROR' error messages if any ** *** 'UNIT' unit string of originally given unit ** *** 'VALUES' array of type "unitstring=>value", ** *** with first entry being the main unit ** *** and the following *mandatory* keys ** - *** 'STDUNIT' Main unit used for storing data ** + *** 'STDUNIT' Main unit used for storing data, in ** + *** unit column of smw_attributes ** *** 'ALLUNITS' An array of supported unit strings ** *** All of these require internationalization (errors, ** *** unit abbreviations) **/ @@ -244,6 +248,54 @@ } +function SMWConvertMass($value, $unit) { + $result=Array(); + + $result['STDUNIT']='kg;'; // According to SI, this is the base unit for Mass + $result['ALLUNITS']=array('g', 'kg', 'tonne', 'lb', 'oz', 'THIS ALLUNITS NOT REALLY USED!?'); + if ($value===false) return $result; //abort + + // Input: convert the unit to the main unit + switch ( $unit ) { + case '': case 'kg': case 'kilogram': case 'kilograms': + $mainval=$value; + $result['UNIT']='kg'; + break; + ## TODO: SI prefix handling should be separate, see + ## + case 'g': case 'grams': + $mainval=$value/1000; + $result['UNIT']='g'; + break; + ## TODO: The "metric ton", not sure whether to handle imperial ton. + case 'tonne': case 'tonnes': + $mainval=$value*1000; + $result['UNIT']='g'; + break; + case 'lb': case 'lbs': case 'pounds': + $mainval=$value*0.45359237; // The official conversion + $result['UNIT']='lb'; + break; + ## TODO: Does PHP optimize these conversions? + case 'oz': + $mainval=$value*0.028349523125; // 1/16 of lb conversion + $result['UNIT']='oz'; + break; + ## TODO: imperial tons, etc. + default: //unsupported unit + $result['ERROR']=wfMsgForContent('smw_unsupportedunit',$unit); + return $result; + } + + // Output: print custom unit conversions + $result['VALUES']=Array(); + $result['VALUES']['kg']=$mainval; + $result['VALUES']['g']=$mainval*1000; + $result['VALUES']['lbs']=$mainval*2.2046226218487758072297380134503; // 1/0.45359237; + + return $result; +} + /** * This method checks whether a given input unit string * belongs to a squared unit. If this is the case, the |
From: Markus <ma...@ai...> - 2006-04-24 16:35:27
|
On Monday 24 April 2006 11:39, S Page wrote: > I thought I'd try extending the current type handling before critiquing > it. So this patch adds support for mass, i.e. Attribute:Mass [[has > type::Type:Mass]] instead of the current [[has type::Type:Float]]. It > was pretty straightforward to extend SMW_DT_Float.php, well done. Well, thanks. But the fact is, that the current system for units is not goi= ng=20 to work for a large number of units (and scales of one unit -- you do not=20 want to convert atomic mass to kg ;). We are unsure yet how to build a unit= =20 conversion system that is more generaic, and that can be internationalized.= =20 > > I created a test page for it, http://wiki.ontoworld.org/wiki/Test_Units > , which passes on my local codebase. > > A few questions/notes. > * I made the default units kg, per http://en.wikipedia.org/wiki/SI. Your choice. I think SI is a good guide here. > * I don't understand the getUnits() implementation, does anything > actually use it? > * Is the intent of the getUnits() function to communicate to users the > supported units for a type? getUnits() was originally introduced for the search function: if you did no= t=20 give a unit, it used the standard unit. But since 0.3 the database layout=20 allows us to search for values without giving the unit, so it is somehow=20 obsolete. I kept it in to be able to give some sort of user feedback at som= e=20 stage (e.g. on type pages, one could output the supported units). But I now= =20 think that we need a more generic approach to supporting units before getti= ng=20 into these details ... > > Please flame away at any thing large or small. I don't even know what > "PHP" means! *lol* I just looked it up on http://en.wikipedia.org/wiki/PHP -- nothing to= =20 remember though ... I think the code is quite OK and I will have a closer=20 look and put it into the code soon. You might want to have a look at our ne= w=20 http://wiki.ontoworld.org/wiki/Semantic_MediaWiki_style_guidelines for nami= ng=20 conventions. Our code is not consistent with these yet, but it's a goal. Al= so=20 see http://wiki.ontoworld.org/wiki/Semantic_MediaWiki_development_activities =2D- Markus > > -- > =3DS Page > > Index: SMW_LanguageEn.php > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: > /cvsroot/semediawiki/SemanticMediaWiki/languages/SMW_LanguageEn.php,v > retrieving revision 1.10 > diff -u -r1.10 SMW_LanguageEn.php > --- SMW_LanguageEn.php 29 Mar 2006 14:01:14 -0000 1.10 > +++ SMW_LanguageEn.php 24 Apr 2006 09:22:13 -0000 > @@ -84,6 +84,7 @@ > 'smw_geolength' =3D> 'Geographic length', // name of the geolength ty= pe > 'smw_geoarea' =3D> 'Geographic area', // name of the geoarea type > 'smw_geocoordinate' =3D> 'Geographic coordinate', // name of the > geocoord type > + 'smw_mass' =3D> 'Mass', // name of the mass type > ); > > /* private */ var $smwSpecialProperties =3D array( > > Index: SMW_LanguageDe.php > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: > /cvsroot/semediawiki/SemanticMediaWiki/languages/SMW_LanguageDe.php,v > retrieving revision 1.15 > diff -u -r1.15 SMW_LanguageDe.php > --- SMW_LanguageDe.php 29 Mar 2006 14:04:31 -0000 1.15 > +++ SMW_LanguageDe.php 24 Apr 2006 09:28:17 -0000 > @@ -84,6 +84,7 @@ > 'smw_geolength' =3D> 'Geografische L=C3=A4nge', // name of the geolen= gth type > 'smw_geoarea' =3D> 'Geografische Fl=C3=A4che', // name of the geoarea= type > 'smw_geocoordinate' =3D> 'Geografische Koordinaten', // name of the > geocoord type > + 'smw_mass' =3D> 'Masse', // name of the mass type > ); > > /* private */ var $smwSpecialProperties =3D array( > > > Index: SMW_DT_Float.php > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: > /cvsroot/semediawiki/SemanticMediaWiki/includes/SMW_DT_Float.php,v > retrieving revision 1.1 > diff -u -r1.1 SMW_DT_Float.php > --- SMW_DT_Float.php 25 Mar 2006 10:08:17 -0000 1.1 > +++ SMW_DT_Float.php 24 Apr 2006 09:09:38 -0000 > @@ -10,6 +10,8 @@ > new > SMWFloatTypeHandler('SMWConvertGeographicArea','geoarea')); > SMWRegisterTypeHandler($SMW_ContLang->getDatatypeLabel('smw_geolength'), > new > SMWFloatTypeHandler('SMWConvertGeographicLength','geolength')); > +SMWRegisterTypeHandler($SMW_ContLang->getDatatypeLabel('smw_mass'), > + new SMWFloatTypeHandler('SMWConvertMass','mass')); > > /** > * Class for managing floating point types. Parses floating point > @@ -66,6 +68,7 @@ > $result=3DArray(); > $result['TYPE']=3D$this->typeid; > // strip kilo separators and split off number from the rest: > + ## TODO: this regexp is also in FloatTypeHandler, should move to commo= n. > $arr=3D preg_split('/([-+]?[\d]+[' . > wfMsgForContent('smw_decseparator') . ']?[\d]*)[ ]*/', > str_replace(wfMsgForContent('smw_kiloseparator'), '', $v), 2, > PREG_SPLIT_DELIM_CAPTURE); > > $arr[1] =3D str_replace(wfMsgForContent('smw_decseparator'), '.', > $arr[1]); > @@ -162,13 +165,14 @@ > /*** Input: $value -- numerical value, $unit -- unit string ** > *** $value can be FALSE to indicate that only the ** > *** mandatory keys are required ** > - *** Outut: array with optional keys ** > + *** Output: array with optional keys ** > *** 'ERROR' error messages if any ** > *** 'UNIT' unit string of originally given unit ** > *** 'VALUES' array of type "unitstring=3D>value", ** > *** with first entry being the main unit ** > *** and the following *mandatory* keys ** > - *** 'STDUNIT' Main unit used for storing data ** > + *** 'STDUNIT' Main unit used for storing data, in ** > + *** unit column of smw_attributes ** > *** 'ALLUNITS' An array of supported unit strings ** > *** All of these require internationalization (errors, ** > *** unit abbreviations) **/ > @@ -244,6 +248,54 @@ > } > > > +function SMWConvertMass($value, $unit) { > + $result=3DArray(); > + > + $result['STDUNIT']=3D'kg;'; // According to SI, this is the base unit > for Mass > + $result['ALLUNITS']=3Darray('g', 'kg', 'tonne', 'lb', 'oz', 'THIS > ALLUNITS NOT REALLY USED!?'); > + if ($value=3D=3D=3Dfalse) return $result; //abort > + > + // Input: convert the unit to the main unit > + switch ( $unit ) { > + case '': case 'kg': case 'kilogram': case 'kilograms': > + $mainval=3D$value; > + $result['UNIT']=3D'kg'; > + break; > + ## TODO: SI prefix handling should be separate, see > + ## > + case 'g': case 'grams': > + $mainval=3D$value/1000; > + $result['UNIT']=3D'g'; > + break; > + ## TODO: The "metric ton", not sure whether to handle imperial ton. > + case 'tonne': case 'tonnes': > + $mainval=3D$value*1000; > + $result['UNIT']=3D'g'; > + break; > + case 'lb': case 'lbs': case 'pounds': > + $mainval=3D$value*0.45359237; // The official conversion > + $result['UNIT']=3D'lb'; > + break; > + ## TODO: Does PHP optimize these conversions? > + case 'oz': > + $mainval=3D$value*0.028349523125; // 1/16 of lb conversion > + $result['UNIT']=3D'oz'; > + break; > + ## TODO: imperial tons, etc. > + default: //unsupported unit > + $result['ERROR']=3DwfMsgForContent('smw_unsupportedunit',$unit); > + return $result; > + } > + > + // Output: print custom unit conversions > + $result['VALUES']=3DArray(); > + $result['VALUES']['kg']=3D$mainval; > + $result['VALUES']['g']=3D$mainval*1000; > + $result['VALUES']['lbs']=3D$mainval*2.2046226218487758072297380134503; > // 1/0.45359237; > + > + return $result; > +} > + > /** > * This method checks whether a given input unit string > * belongs to a squared unit. If this is the case, the > > > ------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat= =3D121642 > _______________________________________________ > Semediawiki-devel mailing list > Sem...@li... > https://lists.sourceforge.net/lists/listinfo/semediawiki-devel =2D-=20 Markus Kr=F6tzsch Institute AIFB, University of Karlsruhe, D-76128 Karlsruhe ma...@ai... phone +49 (0)721 608 7362 www.aifb.uni-karlsruhe.de/WBS/ fax +49 (0)721 693 717 |
From: Reini U. <ru...@x-...> - 2007-03-03 22:15:23
|
Markus Krötzsch schrieb: > On Monday 24 April 2006 11:39, S Page wrote: >> I thought I'd try extending the current type handling before critiquing >> it. So this patch adds support for mass, i.e. Attribute:Mass [[has >> type::Type:Mass]] instead of the current [[has type::Type:Float]]. It >> was pretty straightforward to extend SMW_DT_Float.php, well done. > > Well, thanks. But the fact is, that the current system for units is not going > to work for a large number of units (and scales of one unit -- you do not > want to convert atomic mass to kg ;). We are unsure yet how to build a unit > conversion system that is more generaic, and that can be internationalized. FYI: In PhpWiki I'm just using the external programm units (/usr/bin/units and /usr/share/units.dat) which is detecting and converting most of the needed numbers with units fine, gets the base unit and number (you call it "default unit"), and has a huge database, which will most likely never be duplicated in php. At least I hope so. >> I created a test page for it, http://wiki.ontoworld.org/wiki/Test_Units >> , which passes on my local codebase. >> >> A few questions/notes. >> * I made the default units kg, per http://en.wikipedia.org/wiki/SI. > > Your choice. I think SI is a good guide here. > >> * I don't understand the getUnits() implementation, does anything >> actually use it? >> * Is the intent of the getUnits() function to communicate to users the >> supported units for a type? > > getUnits() was originally introduced for the search function: if you did not > give a unit, it used the standard unit. But since 0.3 the database layout > allows us to search for values without giving the unit, so it is somehow > obsolete. I kept it in to be able to give some sort of user feedback at some > stage (e.g. on type pages, one could output the supported units). But I now > think that we need a more generic approach to supporting units before getting > into these details ... > >> Please flame away at any thing large or small. I don't even know what >> "PHP" means! > > *lol* I just looked it up on http://en.wikipedia.org/wiki/PHP -- nothing to > remember though ... I think the code is quite OK and I will have a closer > look and put it into the code soon. You might want to have a look at our new > http://wiki.ontoworld.org/wiki/Semantic_MediaWiki_style_guidelines for naming > conventions. Our code is not consistent with these yet, but it's a goal. Also > see http://wiki.ontoworld.org/wiki/Semantic_MediaWiki_development_activities > > -- Markus > >> -- >> =S Page >> >> Index: SMW_LanguageEn.php >> =================================================================== >> RCS file: >> /cvsroot/semediawiki/SemanticMediaWiki/languages/SMW_LanguageEn.php,v >> retrieving revision 1.10 >> diff -u -r1.10 SMW_LanguageEn.php >> --- SMW_LanguageEn.php 29 Mar 2006 14:01:14 -0000 1.10 >> +++ SMW_LanguageEn.php 24 Apr 2006 09:22:13 -0000 >> @@ -84,6 +84,7 @@ >> 'smw_geolength' => 'Geographic length', // name of the geolength type >> 'smw_geoarea' => 'Geographic area', // name of the geoarea type >> 'smw_geocoordinate' => 'Geographic coordinate', // name of the >> geocoord type >> + 'smw_mass' => 'Mass', // name of the mass type >> ); >> >> /* private */ var $smwSpecialProperties = array( >> >> Index: SMW_LanguageDe.php >> =================================================================== >> RCS file: >> /cvsroot/semediawiki/SemanticMediaWiki/languages/SMW_LanguageDe.php,v >> retrieving revision 1.15 >> diff -u -r1.15 SMW_LanguageDe.php >> --- SMW_LanguageDe.php 29 Mar 2006 14:04:31 -0000 1.15 >> +++ SMW_LanguageDe.php 24 Apr 2006 09:28:17 -0000 >> @@ -84,6 +84,7 @@ >> 'smw_geolength' => 'Geografische LÃ?nge', // name of the geolength type >> 'smw_geoarea' => 'Geografische FlÃ?che', // name of the geoarea type >> 'smw_geocoordinate' => 'Geografische Koordinaten', // name of the >> geocoord type >> + 'smw_mass' => 'Masse', // name of the mass type >> ); >> >> /* private */ var $smwSpecialProperties = array( >> >> >> Index: SMW_DT_Float.php >> =================================================================== >> RCS file: >> /cvsroot/semediawiki/SemanticMediaWiki/includes/SMW_DT_Float.php,v >> retrieving revision 1.1 >> diff -u -r1.1 SMW_DT_Float.php >> --- SMW_DT_Float.php 25 Mar 2006 10:08:17 -0000 1.1 >> +++ SMW_DT_Float.php 24 Apr 2006 09:09:38 -0000 >> @@ -10,6 +10,8 @@ >> new >> SMWFloatTypeHandler('SMWConvertGeographicArea','geoarea')); >> SMWRegisterTypeHandler($SMW_ContLang->getDatatypeLabel('smw_geolength'), >> new >> SMWFloatTypeHandler('SMWConvertGeographicLength','geolength')); >> +SMWRegisterTypeHandler($SMW_ContLang->getDatatypeLabel('smw_mass'), >> + new SMWFloatTypeHandler('SMWConvertMass','mass')); >> >> /** >> * Class for managing floating point types. Parses floating point >> @@ -66,6 +68,7 @@ >> $result=Array(); >> $result['TYPE']=$this->typeid; >> // strip kilo separators and split off number from the rest: >> + ## TODO: this regexp is also in FloatTypeHandler, should move to common. >> $arr= preg_split('/([-+]?[\d]+[' . >> wfMsgForContent('smw_decseparator') . ']?[\d]*)[ ]*/', >> str_replace(wfMsgForContent('smw_kiloseparator'), '', $v), 2, >> PREG_SPLIT_DELIM_CAPTURE); >> >> $arr[1] = str_replace(wfMsgForContent('smw_decseparator'), '.', >> $arr[1]); >> @@ -162,13 +165,14 @@ >> /*** Input: $value -- numerical value, $unit -- unit string ** >> *** $value can be FALSE to indicate that only the ** >> *** mandatory keys are required ** >> - *** Outut: array with optional keys ** >> + *** Output: array with optional keys ** >> *** 'ERROR' error messages if any ** >> *** 'UNIT' unit string of originally given unit ** >> *** 'VALUES' array of type "unitstring=>value", ** >> *** with first entry being the main unit ** >> *** and the following *mandatory* keys ** >> - *** 'STDUNIT' Main unit used for storing data ** >> + *** 'STDUNIT' Main unit used for storing data, in ** >> + *** unit column of smw_attributes ** >> *** 'ALLUNITS' An array of supported unit strings ** >> *** All of these require internationalization (errors, ** >> *** unit abbreviations) **/ >> @@ -244,6 +248,54 @@ >> } >> >> >> +function SMWConvertMass($value, $unit) { >> + $result=Array(); >> + >> + $result['STDUNIT']='kg;'; // According to SI, this is the base unit >> for Mass >> + $result['ALLUNITS']=array('g', 'kg', 'tonne', 'lb', 'oz', 'THIS >> ALLUNITS NOT REALLY USED!?'); >> + if ($value===false) return $result; //abort >> + >> + // Input: convert the unit to the main unit >> + switch ( $unit ) { >> + case '': case 'kg': case 'kilogram': case 'kilograms': >> + $mainval=$value; >> + $result['UNIT']='kg'; >> + break; >> + ## TODO: SI prefix handling should be separate, see >> + ## >> + case 'g': case 'grams': >> + $mainval=$value/1000; >> + $result['UNIT']='g'; >> + break; >> + ## TODO: The "metric ton", not sure whether to handle imperial ton. >> + case 'tonne': case 'tonnes': >> + $mainval=$value*1000; >> + $result['UNIT']='g'; >> + break; >> + case 'lb': case 'lbs': case 'pounds': >> + $mainval=$value*0.45359237; // The official conversion >> + $result['UNIT']='lb'; >> + break; >> + ## TODO: Does PHP optimize these conversions? >> + case 'oz': >> + $mainval=$value*0.028349523125; // 1/16 of lb conversion >> + $result['UNIT']='oz'; >> + break; >> + ## TODO: imperial tons, etc. >> + default: //unsupported unit >> + $result['ERROR']=wfMsgForContent('smw_unsupportedunit',$unit); >> + return $result; >> + } >> + >> + // Output: print custom unit conversions >> + $result['VALUES']=Array(); >> + $result['VALUES']['kg']=$mainval; >> + $result['VALUES']['g']=$mainval*1000; >> + $result['VALUES']['lbs']=$mainval*2.2046226218487758072297380134503; >> // 1/0.45359237; >> + >> + return $result; >> +} >> + >> /** >> * This method checks whether a given input unit string >> * belongs to a squared unit. If this is the case, the -- Reini Urban http://phpwiki.org/ http://murbreak.at/ http://helsinki.at/ http://spacemovie.mur.at/ |
From: S P. <ski...@ea...> - 2007-03-04 08:57:39
|
> Markus Krötzsch schrieb: >> We are unsure yet how to build a unit >> conversion system that is more generic, and that can be internationalized. Reini Urban wrote: > FYI: In PhpWiki I'm just using the external programm units > (/usr/bin/units and /usr/share/units.dat) > which is detecting and converting most of the needed numbers with units > fine, gets the base unit and number (you call it "default unit"), and > has a huge database, which will most likely never be duplicated in php. > At least I hope so. Yeah, UNIX units(1) is amazing. I looked at your code and it seems you execute `units 963.66 km^2` and read the value and unit after "Definition:" in the program output. Good idea! Maybe this approach could be an option in SMW. My Cygwin units program doesn't seem internationalized, though maybe someone has translated units.dat. Is there more information about PhpWiki and its take on a semantic Wiki? I installed PhpWiki from SourceForge, and got a few errors, so I'm not sure what results I should be seeing. (Errors below.) Good luck with your work! -- =S Page Appendix: my PhpWiki 1.3.13 errors. The ongoing errors are: Warning: "units: " (...repeated 6 times) This is probably due to path issues on my Windows/cygwin/XAMPPLite system Warning: "WikiPluginLoader::include_once(lib/plugin/SemanticRelations.php) [<a href='function.WikiPluginLoader-include-once'>function.WikiPluginLoader-include-once</a>]: failed to open stream: No such file or directory" This seems because SemanticRelations.php isn't present in 1.3.13. During initial start of a virgin PhpWiki I saw the following error interspersed with page loading: ... RelatedChanges from MIME file C:/xampplite/htdocs/phpwiki-1.3.13/pgsrc/RelatedChanges - New page - saved to database as version 1 Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 78471 bytes) in C:\xampplite\htdocs\phpwiki-1.3.13\lib\ziplib.php on line 870 I reloaded and saw: ... Complete. Return to HomePage Warning: "units: " (...repeated 6 times) Warning: "WikiPluginLoader::include_once(lib/plugin/SemanticRelations.php) [<a href='function.WikiPluginLoader-include-once'>function.WikiPluginLoader-include-once</a>]: failed to open stream: No such file or directory" |