[Frameworkspider-svn] spider-commit [14]

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 3月 27日 (金) 16:12:05 JST


Revision: 14
          http://svn.sourceforge.jp/view?root=frameworkspider&view=rev&rev=14
Author:   m_nakashima
Date:     2009-03-27 16:12:05 +0900 (Fri, 27 Mar 2009)

Log Message:
-----------


Modified Paths:
--------------
    current/DATA/lib/spider/tags/TagBase.class.php
    current/DATA/lib/spider/tags/Write.class.php
    current/README.txt


-------------- next part --------------
Modified: current/DATA/lib/spider/tags/TagBase.class.php
===================================================================
--- current/DATA/lib/spider/tags/TagBase.class.php	2009-03-27 02:03:06 UTC (rev 13)
+++ current/DATA/lib/spider/tags/TagBase.class.php	2009-03-27 07:12:05 UTC (rev 14)
@@ -147,7 +147,7 @@
 					if( preg_match('/^\\$/',$element_data ) > 0 ) {
 						// $から始まるなら変換しないでそのまま追加
 						$converted_strings	.= $element_data;
-					} else if( preg_match('/^\\\'/',$element_data ) > 0 && preg_match('/\\\'$/',$element_data ) > 0 ) {
+					} else if( preg_match('/^\'/',$element_data ) > 0 && preg_match('/\'$/',$element_data ) > 0 ) {
 						// クォートされているなら文字列
 						if( $key > 2 && $element_array[$key-1] == '>' &&  $element_array[$key-2] == '-'){
 							// 前の要素が->オブジェクトメンバ指定子の場合クォートを除去して追加
@@ -156,7 +156,7 @@
 							// ただの文字列の場合はそのまま追加
 							$converted_strings	.= $element_data;
 						}
-					} else if( preg_match('/^\\\"/',$element_data ) > 0 && preg_match('/\\\"$/',$element_data ) > 0 ) {
+					} else if( preg_match('/^"/',$element_data ) > 0 && preg_match('/"$/',$element_data ) > 0 ) {
 						// クォートされているなら文字列
 						if( $key > 2 && $element_array[$key-1] == '>' &&  $element_array[$key-2] == '-'){
 							// 前の要素が->オブジェクトメンバ指定子の場合

Modified: current/DATA/lib/spider/tags/Write.class.php
===================================================================
--- current/DATA/lib/spider/tags/Write.class.php	2009-03-27 02:03:06 UTC (rev 13)
+++ current/DATA/lib/spider/tags/Write.class.php	2009-03-27 07:12:05 UTC (rev 14)
@@ -67,14 +67,63 @@
 				$var_name	= preg_replace( '/\\{write\\:/','', $vars_tag );
 				$var_name	= preg_replace( '/\\}$/','', $var_name );
 				$var_name	= trim( $var_name );
-				$repstr		= $this->parseString( $var_name, $valiable_counter );
+				// 下位互換の為::を含むなら旧ロジック
+				$repstr		= '';
+				if( preg_match('/\\:\\:/',$var_name) > 0 ) {
+					$repstr	= $this->parseString( $var_name, $valiable_counter );
+				} else {
+					$repstr	= $this->tagOption2code( $var_name );
+				}
 				$result_strings	= str_replace( $vars_tag, $repstr, $result_strings );
 				$valiable_counter++;
 			}
 		}
 	}
 	/**
+	 * 
+	 */
+	function tagOption2code( $strings ) {
+		// 最初に文字列化コード
+		$ret_strings			= 'print_r( '.$strings.', true )';
+		// 出力オプション指定文字の処理
+		if( strpos( $ret_strings, 'nl2null' ) !== false ) {
+			$ret_strings		= 'str_replace("\\n","",str_replace("\\r","",str_replace("\\r\\n","",'.$ret_strings.')))';
+			$ret_strings		= str_replace('nl2null','',$ret_strings);
+		}
+		if( strpos( $ret_strings, 'escape-nl' ) !== false ) {
+			$ret_strings		= 'str_replace("\\n","\\\n",str_replace("\\r","\\n",str_replace("\\r\\n","\\n",'.$ret_strings.')))';
+			$ret_strings		= str_replace('escape-nl','',$ret_strings);
+		}
+		if( strpos( $ret_strings, 'escape-sq' ) !== false ) {
+			$ret_strings		= 'str_replace("\'","\\\'",'.$ret_strings.')';
+			$ret_strings		= str_replace('escape-sq','',$ret_strings);
+		}
+		if( strpos( $ret_strings, 'escape-dq' ) !== false ) {
+			$ret_strings		= 'str_replace(\'"\',\'\\"\','.$ret_strings.')';
+			$ret_strings		= str_replace('escape-dq','',$ret_strings);
+		}
+		if( strpos( $ret_strings, 'noescape' ) !== false ) {
+			$ret_strings		= str_replace('noescape','',$ret_strings);
+		} else {
+			$ret_strings		= 'htmlspecialchars('.$ret_strings.')';
+		}
+		if( strpos( $ret_strings, 'nl2br' ) !== false ) {
+			$ret_strings		= str_replace('nl2br','',$ret_strings);
+			$ret_strings		= 'nl2br('.$ret_strings.')';
+		}
+		if( strpos( $ret_strings, 'urlencode' ) !== false ) {
+			$ret_strings		= str_replace('urlencode','',$ret_strings);
+			$ret_strings		= 'urlencode('.$ret_strings.')';
+		}
+		// ネイティブコード化
+		$ret_strings			= $this->tagCode2NativeCode( $ret_strings );
+		// 最後にecho
+		$ret_strings		= '<?php echo '.$ret_strings.'; ?>';
+		return $ret_strings;
+	}
+	/**
 	 * 文字列解析
+	 * 旧バージョン互換::を利用できる
 	 */
 	function parseString(  $strings, $prefix=1  ) {
 
@@ -222,39 +271,39 @@
 		$retstring	= '<?php ' . implode("",$temporary_valiable_getter_array);
 		$retstring	.= ' if(is_object('.$strings.')||is_array('.$strings.')){ ';
 			$retstring	.= 'echo ';
+			if( $is_urlencode ) { $retstring	.= 'urlencode('; }
 			if( $is_nl2br ) { $retstring		.= 'nl2br('; }
 			if( !$is_noescape ) { $retstring	.= 'htmlspecialchars('; }
 			if( $is_escape_sq ) { $retstring	.= 'str_replace("\'","\\\'",'; }
 			if( $is_escape_dq ) { $retstring	.= 'str_replace(\'"\',\'\\"\','; }
 			if( $is_escape_nl ) { $retstring	.= 'str_replace("\\n","\\\n",str_replace("\\r","\\n",str_replace("\\r\\n","\\n",'; }
 			if( $is_nl2null ) { $retstring	.= 'str_replace("\\n","",str_replace("\\r","",str_replace("\\r\\n","",'; }
-			if( $is_urlencode ) { $retstring	.= 'urlencode('; }
 			$retstring		.= 'print_r( '.$strings.', true )';
-			if( $is_urlencode ) { $retstring	.= ')'; }
 			if( $is_nl2null ) { $retstring	.= ')'; }
 			if( $is_escape_nl ) { $retstring	.= ')'; }
 			if( $is_escape_dq ) { $retstring	.= ')'; }
 			if( $is_escape_sq ) { $retstring	.= ')'; }
 			if( !$is_noescape ) { $retstring	.= ')'; }
 			if( $is_nl2br ) { $retstring	.= ')'; }
+			if( $is_urlencode ) { $retstring	.= ')'; }
 			$retstring	.= ';';
 		$retstring	.= ' }else{ ';
 			$retstring	.= 'echo ';
+			if( $is_urlencode ) { $retstring	.= 'urlencode('; }
 			if( $is_nl2br ) { $retstring		.= 'nl2br('; }
 			if( !$is_noescape ) { $retstring	.= 'htmlspecialchars('; }
 			if( $is_escape_sq ) { $retstring	.= 'str_replace("\'","\\\'",'; }
 			if( $is_escape_dq ) { $retstring	.= 'str_replace(\'"\',\'\\"\','; }
 			if( $is_escape_nl ) { $retstring	.= 'str_replace("\\n","\\\n",str_replace("\\r","\\n",str_replace("\\r\\n","\\n",'; }
 			if( $is_nl2null ) { $retstring	.= 'str_replace("\\n","",str_replace("\\r","",str_replace("\\r\\n","",'; }
-			if( $is_urlencode ) { $retstring	.= 'urlencode('; }
 			$retstring		.= $strings;
-			if( $is_urlencode ) { $retstring	.= ')'; }
 			if( $is_nl2null ) { $retstring	.= ')'; }
 			if( $is_escape_nl ) { $retstring	.= ')'; }
 			if( $is_escape_dq ) { $retstring	.= ')'; }
 			if( $is_escape_sq ) { $retstring	.= ')'; }
 			if( !$is_noescape ) { $retstring	.= ')'; }
 			if( $is_nl2br ) { $retstring	.= ')'; }
+			if( $is_urlencode ) { $retstring	.= ')'; }
 			$retstring	.= ';';
 		$retstring	.= ' } ?>';
 		

Modified: current/README.txt
===================================================================
--- current/README.txt	2009-03-27 02:03:06 UTC (rev 13)
+++ current/README.txt	2009-03-27 07:12:05 UTC (rev 14)
@@ -12,6 +12,12 @@
 
    内部的な変更なのでコアなプログラム変更を行っているユーザ以外には影響ありません。
 
+2) TagBaseクラスでタグコードをネイティブコードに変更するメソッドを修正しました。
+
+3) writeタグの修正をおこないました。::で配列要素やオブジェクトメンバを指定する場合をは旧ロジックで
+   呼び出しを->メンバ名、['添え字']で指定する場合は、階層に関係なくPHPネイティブコードの許す限り記述できる
+   ように機能を変更しました。
+
 -- 2009-03-26
 1) OutputHtmlタグで出力するファイルパスがWindowsで不具合を起こす問題の修正
 



Frameworkspider-svn メーリングリストの案内
Back to archive index