#!/usr/bin/perl
package RVL::String;
# WebSite: http://www.rvglobalsoft.com
# Unauthorized copying is strictly forbidden and may result in severe legal action.
# Copyright (c) 2013 RV Global Soft Co.,Ltd. All rights reserved.
#
# =====YOU MUST KEEP THIS COPYRIGHTS NOTICE INTACT AND CAN NOT BE REMOVE =======
# Copyright (c) 2013 RV Global Soft Co.,Ltd. All rights reserved.
# This Agreement is a legal contract, which specifies the terms of the license
# and warranty limitation between you and RV Global Soft Co.,Ltd. and RV2Factor Product for RV Global Soft.
# You should carefully read the following terms and conditions before
# installing or using this software. Unless you have a different license
# agreement obtained from RV Global Soft Co.,Ltd., installation or use of this software
# indicates your acceptance of the license and warranty limitation terms
# contained in this Agreement. If you do not agree to the terms of this
# Agreement, promptly delete and destroy all copies of the Software.
#
# ===== Grant of License =======
# The Software may only be installed and used on a single host machine.
#
# ===== Disclaimer of Warranty =======
# THIS SOFTWARE AND ACCOMPANYING DOCUMENTATION ARE PROVIDED "AS IS" AND
# WITHOUT WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR ANY OTHER
# WARRANTIES WHETHER EXPRESSED OR IMPLIED. BECAUSE OF THE VARIOUS HARDWARE
# AND SOFTWARE ENVIRONMENTS INTO WHICH RV SITE BUILDER MAY BE USED, NO WARRANTY OF
# FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. THE USER MUST ASSUME THE
# ENTIRE RISK OF USING THIS PROGRAM. ANY LIABILITY OF RV GLOBAL SOFT CO.,LTD. WILL BE
# LIMITED EXCLUSIVELY TO PRODUCT REPLACEMENT OR REFUND OF PURCHASE PRICE.
# IN NO CASE SHALL RV GLOBAL SOFT CO.,LTD. BE LIABLE FOR ANY INCIDENTAL, SPECIAL OR
# CONSEQUENTIAL DAMAGES OR LOSS, INCLUDING, WITHOUT LIMITATION, LOST PROFITS
# OR THE INABILITY TO USE EQUIPMENT OR ACCESS DATA, WHETHER SUCH DAMAGES ARE
# BASED UPON A BREACH OF EXPRESS OR IMPLIED WARRANTIES, BREACH OF CONTRACT,
# NEGLIGENCE, STRICT TORT, OR ANY OTHER LEGAL THEORY. THIS IS TRUE EVEN IF
# RV GLOBAL SOFT CO.,LTD. IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO CASE WILL
# RV GLOBAL SOFT CO.,LTD.'S LIABILITY EXCEED THE AMOUNT OF THE LICENSE FEE ACTUALLY PAID
# BY LICENSEE TO RV GLOBAL SOFT CO.,LTD.
# ===============================
use strict;
use warnings;
use HTML::StripTags qw(strip_tags);
use Class::Std::Utils;
{
sub getref {
my ($value) = shift;
unless (ref($value)) {
return getref(\$value);
}
return ref($value);
}
sub cleanHTMLTag {
my ($value, $notRemoveTags) = @_;
if (!$value) {
return ;
}
$notRemoveTags = '' if (!$notRemoveTags);
if (is_string($value)) {
$value = trim($value);
$value = strip_tags($value, $notRemoveTags);
} elsif (is_array($value)) {
my (@newArray);
foreach my $inArray( @{$value}) {
push(@newArray, cleanHTMLTag($inArray, $notRemoveTags));
}
@{$value} = @newArray;
} elsif (is_hash($value)) {
my (%newHash);
foreach my $key( keys %{$value}) {
$newHash{$key} = cleanHTMLTag(${$value}{$key}, $notRemoveTags);
}
%{$value} = %newHash;
} elsif (is_ref($value)) {
my ($newRef);
foreach my $key( keys %{$value}) {
$newRef->{$key} = cleanHTMLTag(${$value}->{$key}, $notRemoveTags);
}
%{$value} = $newRef;
}
return $value;
}
sub trim {
my ($value) = shift;
$value =~s/^[\s| ]+|[\s| ]+$//simx;
#$value =~s/(^\s+|\s+$)//simx;
return $value;
}
sub is_array {
my ($value) = shift;
if (getref($value) eq 'ARRAY') {
return 1;
} else {
return 0;
}
}
sub is_string {
my ($value) = shift;
if (getref($value) eq 'SCALAR') {
return 1;
} else {
return 0;
}
}
sub is_hash {
my ($value) = shift;
if (RVL::String::getref($value) eq 'HASH') {
return 1;
} else {
return 0;
}
}
sub is_ref {
my ($value) = shift;
if (RVL::String::getref($value) eq 'REF') {
return 1;
} else {
return 0;
}
}
=item
merge array with array = array
@array = merge(\@value1, \@value2);
merge hash with hash = hash
%hash = merge(\@value1, \@value2);
merge ref with ref = ref
$ref = merge($value1, $value2);
merge any with ref = ref
$ref = merge(@value1 or @value1 or $value1, $value2);
merge ref with any = ref
=cut
sub merge{
my ($value1, $value2) = @_;
if (is_string($value1) || is_string($value2)) {
#RVL::raiseError("Cannot merge string", 0, 1, __CONSTANT__::RVL_ERROR_NOFILE);
} elsif (is_array($value1) && is_array($value2)) {
return (@{$value1}, @{$value2});
} elsif (is_hash($value1) && is_hash($value2)) {
my ($resuft) = $value1;
foreach (keys %{$value2}) {
$resuft->{$_} = $value2->{$_};
}
return $resuft;
} elsif (is_ref($value1) && is_ref($value2)) {
my ($resuft) = ${$value1};
foreach (keys %{$value2}) {
$resuft->{$_} = $value2->{$_};
}
return $resuft;
}
}
sub array_map{
my ($callback) = shift;
my (@arr) = @_;
my (@new) = eval("RVL::String::$callback(\@arr);");
return @new;
}
sub lc{
my (@arr1) = @_;
my (@new);
foreach (@arr1) {
push(@new, lc($_));
}
return @new;
}
sub array_search{
my ($search) = shift;
return '' if !defined $search;
my (@arr) = @_;
my ($count) = 0;
foreach (@arr) {
if ($_ eq $search) {
return $count;
}
$count++;
}
return '';
}
sub translate {
my ($key, $filter, $aParams) = @_;
}
=item
=cut
sub unique_array(@) {
my %seen = ();
grep { not $seen{$_}++ } @_;
}
sub in_array {
my ($arr,$search_for) = @_;
return 1 if (grep {$search_for eq $_} @$arr);
return 0;
}
}
1;
Copyright 2K16 - 2K18 Indonesian Hacker Rulez