{
  "_id": "6ad1d648a6a61792ed76ba5f",
  "Package": "xfun",
  "Type": "Package",
  "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'",
  "Version": "0.62.1",
  "Authors@R": "c(\nperson(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")),\nperson(\"Wush\", \"Wu\", role = \"ctb\"),\nperson(\"Daijiang\", \"Li\", role = \"ctb\"),\nperson(\"Xianying\", \"Tan\", role = \"ctb\"),\nperson(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")),\nperson(\"Christophe\", \"Dervieux\", role = \"ctb\"),\nperson()\n)",
  "Description": "Miscellaneous functions commonly used in other packages\nmaintained by 'Yihui Xie'.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/yihui/xfun",
  "BugReports": "https://github.com/yihui/xfun/issues",
  "Encoding": "UTF-8",
  "VignetteBuilder": "litedown",
  "Roxygen": "list(markdown = TRUE)",
  "Config/roxygen2/version": "8.1.1",
  "Repository": "https://yihui.r-universe.dev",
  "Date/Publication": "2026-10-16 04:26:55 UTC",
  "RemoteUrl": "https://github.com/yihui/xfun",
  "RemoteRef": "HEAD",
  "RemoteSha": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-10-16 07:26:57 UTC",
    "User": "root"
  },
  "Author": "Yihui Xie [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0003-0645-5666>, URL: https://yihui.org),\nWush Wu [ctb],\nDaijiang Li [ctb],\nXianying Tan [ctb],\nSalim Brüggemann [ctb] (ORCID: <https://orcid.org/0000-0002-5329-5987>),\nChristophe Dervieux [ctb]",
  "Maintainer": "Yihui Xie <xie@yihui.name>",
  "_user": "yihui",
  "_type": "src",
  "_file": "xfun_0.62.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/b6dbb50c9de7a07ca37dc1289b68141865e9650b957355885ff1c1c0d1c14678",
  "_filesize": 631618,
  "_sha256": "b6dbb50c9de7a07ca37dc1289b68141865e9650b957355885ff1c1c0d1c14678",
  "_expires": "2027-01-24T07:46:14.000Z",
  "_created": "2026-10-16T07:26:57.000Z",
  "_published": "2026-10-16T07:46:16.541Z",
  "_buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 116863023254,
      "time": 114,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12031373220"
    },
    {
      "job": 116863023371,
      "time": 117,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12031892164"
    },
    {
      "job": 116863023191,
      "time": 110,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12032125818"
    },
    {
      "job": 116863023155,
      "time": 670,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12031324548"
    },
    {
      "job": 116863023217,
      "time": 139,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12032108486"
    },
    {
      "job": 116863023300,
      "time": 328,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12032590545"
    },
    {
      "job": 116863023246,
      "time": 130,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12031614906"
    },
    {
      "job": 116863023219,
      "time": 244,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12032800141"
    },
    {
      "job": 116862200484,
      "time": 146,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12031409217"
    },
    {
      "job": 116863023129,
      "time": 86,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12031767716"
    },
    {
      "job": 116863023206,
      "time": 295,
      "config": "windows-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12032146228"
    },
    {
      "job": 116863023308,
      "time": 135,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12032305141"
    },
    {
      "job": 116863023352,
      "time": 128,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "12031238406"
    },
    {
      "job": 116863023405,
      "time": 214,
      "config": "windows-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12031977081"
    },
    {
      "job": 116863023314,
      "time": 94,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12031877100"
    }
  ],
  "_upstream": "https://github.com/yihui/xfun",
  "_commit": {
    "id": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
    "author": "Yihui Xie <xie@yihui.name>",
    "committer": "Yihui Xie <xie@yihui.name>",
    "message": "start the next version\n",
    "time": 1792124815
  },
  "_maintainer": {
    "name": "Yihui Xie",
    "email": "xie@yihui.name",
    "login": "yihui",
    "mastodon": "@yihui@mastodon.social",
    "bluesky": "@yihui.org",
    "linkedin": "in/yihuixie",
    "description": "Freelancer (open source programmer, contractor, blogger, and writer)",
    "uuid": 163582,
    "orcid": "0000-0003-0645-5666"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.2.0",
      "role": "Depends"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "testit",
      "role": "Suggests"
    },
    {
      "package": "parallel",
      "role": "Suggests"
    },
    {
      "package": "codetools",
      "role": "Suggests"
    },
    {
      "package": "methods",
      "role": "Suggests"
    },
    {
      "package": "rstudioapi",
      "role": "Suggests"
    },
    {
      "package": "tinytex",
      "version": ">= 0.30",
      "role": "Suggests"
    },
    {
      "package": "mime",
      "role": "Suggests"
    },
    {
      "package": "litedown",
      "version": ">= 0.6",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "version": ">= 1.50",
      "role": "Suggests"
    },
    {
      "package": "remotes",
      "role": "Suggests"
    },
    {
      "package": "pak",
      "role": "Suggests"
    },
    {
      "package": "curl",
      "role": "Suggests"
    },
    {
      "package": "xml2",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "magick",
      "role": "Suggests"
    },
    {
      "package": "yaml",
      "role": "Suggests"
    },
    {
      "package": "data.table",
      "role": "Suggests"
    },
    {
      "package": "qs2",
      "role": "Suggests"
    }
  ],
  "_owner": "yihui",
  "_selfowned": true,
  "_usedby": 5141,
  "_updates": [
    {
      "week": "2025-44",
      "n": 7
    },
    {
      "week": "2025-45",
      "n": 2
    },
    {
      "week": "2025-46",
      "n": 1
    },
    {
      "week": "2025-48",
      "n": 4
    },
    {
      "week": "2025-49",
      "n": 2
    },
    {
      "week": "2025-50",
      "n": 1
    },
    {
      "week": "2025-51",
      "n": 3
    },
    {
      "week": "2025-52",
      "n": 3
    },
    {
      "week": "2026-03",
      "n": 6
    },
    {
      "week": "2026-05",
      "n": 1
    },
    {
      "week": "2026-07",
      "n": 1
    },
    {
      "week": "2026-09",
      "n": 1
    },
    {
      "week": "2026-10",
      "n": 2
    },
    {
      "week": "2026-12",
      "n": 5
    },
    {
      "week": "2026-13",
      "n": 5
    },
    {
      "week": "2026-14",
      "n": 2
    },
    {
      "week": "2026-15",
      "n": 1
    },
    {
      "week": "2026-16",
      "n": 5
    },
    {
      "week": "2026-17",
      "n": 6
    },
    {
      "week": "2026-21",
      "n": 13
    },
    {
      "week": "2026-22",
      "n": 4
    },
    {
      "week": "2026-23",
      "n": 3
    },
    {
      "week": "2026-25",
      "n": 14
    },
    {
      "week": "2026-26",
      "n": 1
    },
    {
      "week": "2026-27",
      "n": 7
    },
    {
      "week": "2026-28",
      "n": 5
    },
    {
      "week": "2026-34",
      "n": 1
    },
    {
      "week": "2026-35",
      "n": 1
    },
    {
      "week": "2026-36",
      "n": 1
    },
    {
      "week": "2026-37",
      "n": 5
    },
    {
      "week": "2026-38",
      "n": 3
    },
    {
      "week": "2026-39",
      "n": 1
    },
    {
      "week": "2026-40",
      "n": 4
    },
    {
      "week": "2026-41",
      "n": 3
    },
    {
      "week": "2026-42",
      "n": 13
    }
  ],
  "_tags": [
    {
      "name": "v0.54",
      "date": "2025-10-30"
    },
    {
      "name": "v0.55",
      "date": "2025-12-15"
    },
    {
      "name": "v0.56",
      "date": "2026-01-18"
    },
    {
      "name": "v0.57",
      "date": "2026-03-20"
    },
    {
      "name": "v0.58",
      "date": "2026-06-02"
    },
    {
      "name": "v0.59",
      "date": "2026-06-19"
    },
    {
      "name": "v0.60",
      "date": "2026-07-09"
    },
    {
      "name": "v0.61",
      "date": "2026-09-16"
    },
    {
      "name": "v0.62",
      "date": "2026-10-16"
    }
  ],
  "_stars": 156,
  "_contributors": [
    {
      "user": "yihui",
      "count": 975,
      "uuid": 163582
    },
    {
      "user": "cderv",
      "count": 12,
      "uuid": 6791940
    },
    {
      "user": "copilot",
      "count": 8,
      "uuid": 198982749
    },
    {
      "user": "shrektan",
      "count": 7,
      "uuid": 8368933
    },
    {
      "user": "michaelchirico",
      "count": 5,
      "uuid": 7606389
    },
    {
      "user": "salim-b",
      "count": 3,
      "uuid": 20040931
    },
    {
      "user": "remlapmot",
      "count": 2,
      "uuid": 3777473
    },
    {
      "user": "wush978",
      "count": 2,
      "uuid": 1252618
    },
    {
      "user": "chuxinyuan",
      "count": 2,
      "uuid": 26940042
    },
    {
      "user": "nanxstats",
      "count": 2,
      "uuid": 199363
    },
    {
      "user": "eitsupi",
      "count": 1,
      "uuid": 50911393
    },
    {
      "user": "cheny36",
      "count": 1,
      "uuid": 8115076
    },
    {
      "user": "reedacartwright",
      "count": 1,
      "uuid": 101918
    },
    {
      "user": "mmaechler",
      "count": 1,
      "uuid": 995722
    },
    {
      "user": "clarkliming",
      "count": 1,
      "uuid": 36079400
    },
    {
      "user": "kishvanchee",
      "count": 1,
      "uuid": 24776049
    },
    {
      "user": "bblodfon",
      "count": 1,
      "uuid": 10909555
    },
    {
      "user": "j-moravec",
      "count": 1,
      "uuid": 10236938
    },
    {
      "user": "hughparsonage",
      "count": 1,
      "uuid": 8111628
    },
    {
      "user": "harshvardhaniimi",
      "count": 1,
      "uuid": 40472851
    },
    {
      "user": "etiennebacher",
      "count": 1,
      "uuid": 52219252
    },
    {
      "user": "arnaudgallou",
      "count": 1,
      "uuid": 67476099
    },
    {
      "user": "albansagouis",
      "count": 1,
      "uuid": 25483578
    }
  ],
  "_userbio": {
    "uuid": 163582,
    "type": "user",
    "name": "Yihui Xie",
    "followers": 9884,
    "description": "Freelancer (open source programmer, contractor, blogger, and writer)"
  },
  "_downloads": {
    "count": 1376527,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/xfun"
  },
  "_mentions": 2,
  "_devurl": "https://github.com/yihui/xfun",
  "_searchresults": 1540,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/xfun.html",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/yihui/xfun",
  "_realowner": "yihui",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1",
      "date": "2018-01-22"
    },
    {
      "version": "0.2",
      "date": "2018-06-16"
    },
    {
      "version": "0.3",
      "date": "2018-07-06"
    },
    {
      "version": "0.4",
      "date": "2018-10-23"
    },
    {
      "version": "0.5",
      "date": "2019-02-20"
    },
    {
      "version": "0.6",
      "date": "2019-04-08"
    },
    {
      "version": "0.7",
      "date": "2019-05-14"
    },
    {
      "version": "0.8",
      "date": "2019-07-10"
    },
    {
      "version": "0.9",
      "date": "2019-08-21"
    },
    {
      "version": "0.10",
      "date": "2019-10-01"
    },
    {
      "version": "0.11",
      "date": "2019-11-12"
    },
    {
      "version": "0.12",
      "date": "2020-01-13"
    },
    {
      "version": "0.13",
      "date": "2020-04-13"
    },
    {
      "version": "0.14",
      "date": "2020-05-20"
    },
    {
      "version": "0.15",
      "date": "2020-06-21"
    },
    {
      "version": "0.16",
      "date": "2020-07-24"
    },
    {
      "version": "0.17",
      "date": "2020-09-09"
    },
    {
      "version": "0.18",
      "date": "2020-09-29"
    },
    {
      "version": "0.19",
      "date": "2020-10-30"
    },
    {
      "version": "0.20",
      "date": "2021-01-06"
    },
    {
      "version": "0.21",
      "date": "2021-02-10"
    },
    {
      "version": "0.22",
      "date": "2021-03-11"
    },
    {
      "version": "0.23",
      "date": "2021-05-15"
    },
    {
      "version": "0.24",
      "date": "2021-06-15"
    },
    {
      "version": "0.25",
      "date": "2021-08-06"
    },
    {
      "version": "0.26",
      "date": "2021-09-14"
    },
    {
      "version": "0.27",
      "date": "2021-10-18"
    },
    {
      "version": "0.28",
      "date": "2021-11-04"
    },
    {
      "version": "0.29",
      "date": "2021-12-14"
    },
    {
      "version": "0.30",
      "date": "2022-03-02"
    },
    {
      "version": "0.31",
      "date": "2022-05-10"
    },
    {
      "version": "0.32",
      "date": "2022-08-10"
    },
    {
      "version": "0.33",
      "date": "2022-09-13"
    },
    {
      "version": "0.34",
      "date": "2022-10-18"
    },
    {
      "version": "0.35",
      "date": "2022-11-16"
    },
    {
      "version": "0.36",
      "date": "2022-12-21"
    },
    {
      "version": "0.37",
      "date": "2023-02-01"
    },
    {
      "version": "0.38",
      "date": "2023-03-24"
    },
    {
      "version": "0.39",
      "date": "2023-04-20"
    },
    {
      "version": "0.40",
      "date": "2023-08-09"
    },
    {
      "version": "0.41",
      "date": "2023-11-01"
    },
    {
      "version": "0.42",
      "date": "2024-02-08"
    },
    {
      "version": "0.43",
      "date": "2024-03-25"
    },
    {
      "version": "0.44",
      "date": "2024-05-15"
    },
    {
      "version": "0.45",
      "date": "2024-06-16"
    },
    {
      "version": "0.46",
      "date": "2024-07-18"
    },
    {
      "version": "0.47",
      "date": "2024-08-17"
    },
    {
      "version": "0.48",
      "date": "2024-10-03"
    },
    {
      "version": "0.49",
      "date": "2024-10-31"
    },
    {
      "version": "0.50",
      "date": "2025-01-07"
    },
    {
      "version": "0.51",
      "date": "2025-02-19"
    },
    {
      "version": "0.52",
      "date": "2025-04-02"
    },
    {
      "version": "0.53",
      "date": "2025-08-19"
    },
    {
      "version": "0.54",
      "date": "2025-10-30"
    },
    {
      "version": "0.55",
      "date": "2025-12-16"
    },
    {
      "version": "0.56",
      "date": "2026-01-18"
    },
    {
      "version": "0.57",
      "date": "2026-03-20"
    },
    {
      "version": "0.58",
      "date": "2026-06-01"
    },
    {
      "version": "0.59",
      "date": "2026-06-19"
    },
    {
      "version": "0.60",
      "date": "2026-07-09"
    },
    {
      "version": "0.61",
      "date": "2026-09-16"
    },
    {
      "version": "0.62",
      "date": "2026-10-16"
    }
  ],
  "_exports": [
    "alnum_id",
    "append_unique",
    "append_utf8",
    "as_strict_list",
    "attr2",
    "base_pkgs",
    "base64_decode",
    "base64_encode",
    "base64_uri",
    "bg_process",
    "broken_packages",
    "browser_dom",
    "browser_print",
    "bump_version",
    "cache_exec",
    "cache_rds",
    "check_old_package",
    "check_package_name",
    "compare_Rcheck",
    "crandalf_check",
    "crandalf_results",
    "csv_options",
    "decimal_dot",
    "del_empty_dir",
    "dir_create",
    "dir_exists",
    "divide_chunk",
    "do_once",
    "download_cache",
    "download_file",
    "embed_dir",
    "embed_file",
    "embed_files",
    "env_option",
    "existing_files",
    "exit_call",
    "fenced_block",
    "fenced_div",
    "file_exists",
    "file_ext",
    "file_rename",
    "file_string",
    "find_globals",
    "find_locals",
    "format_bytes",
    "from_root",
    "github_api",
    "github_releases",
    "grep_sub",
    "gsub_dir",
    "gsub_ext",
    "gsub_file",
    "gsub_files",
    "html_escape",
    "html_tag",
    "html_value",
    "html_view",
    "in_dir",
    "install_dir",
    "install_github",
    "is_abs_path",
    "is_arm64",
    "is_ascii",
    "is_blank",
    "is_CRAN_incoming",
    "is_linux",
    "is_macos",
    "is_R_CMD_check",
    "is_rel_path",
    "is_sub_path",
    "is_unix",
    "is_web_path",
    "is_windows",
    "join_words",
    "js",
    "json_reviver",
    "json_unpack",
    "json_vector",
    "lazy_load",
    "lazy_save",
    "loadable",
    "magic_path",
    "make_fence",
    "mark_dirs",
    "md_table",
    "md5",
    "mime_type",
    "msg_cat",
    "n2w",
    "native_encode",
    "new_app",
    "new_record",
    "news2md",
    "normalize_path",
    "numbers_to_words",
    "optipng",
    "parse_only",
    "pkg_attach",
    "pkg_attach2",
    "pkg_available",
    "pkg_bib",
    "pkg_load",
    "pkg_load2",
    "post_release",
    "proc_kill",
    "process_file",
    "proj_root",
    "prose_index",
    "protect_math",
    "radix_group",
    "radix_id",
    "rand_unit",
    "random_port",
    "raw_string",
    "Rcmd",
    "read_all",
    "read_bin",
    "read_utf8",
    "record",
    "record_print",
    "relative_path",
    "rename_seq",
    "rest_api",
    "rest_api_raw",
    "retry",
    "rev_check",
    "root_rules",
    "Rscript",
    "Rscript_call",
    "rstudio_type",
    "same_path",
    "sans_ext",
    "serve_dir",
    "session_info",
    "set_envvar",
    "shrink_images",
    "sort_file",
    "split_lines",
    "split_source",
    "stop_app",
    "str_wrap",
    "strict_list",
    "strip_html",
    "submit_cran",
    "system3",
    "tab_content",
    "tabset",
    "taml_file",
    "taml_load",
    "taml_save",
    "tinify",
    "tinify_dir",
    "tojson",
    "tree",
    "try_error",
    "try_silent",
    "upload_ftp",
    "upload_imgur",
    "upload_win_builder",
    "url_accessible",
    "url_destination",
    "url_filename",
    "valid_syntax",
    "with_ext",
    "write_utf8",
    "yaml_body",
    "yaml_load"
  ],
  "_help": [
    {
      "page": "alnum_id",
      "title": "Generate ID strings",
      "topics": [
        "alnum_id"
      ]
    },
    {
      "page": "attr2",
      "title": "Obtain an attribute of an object without partial matching",
      "topics": [
        "attr2"
      ]
    },
    {
      "page": "base_pkgs",
      "title": "Get base R package names",
      "topics": [
        "base_pkgs"
      ]
    },
    {
      "page": "base64_encode",
      "title": "Encode/decode data into/from base64 encoding.",
      "topics": [
        "base64_decode",
        "base64_encode"
      ]
    },
    {
      "page": "base64_uri",
      "title": "Generate the Data URI for a file",
      "topics": [
        "base64_uri"
      ]
    },
    {
      "page": "bg_process",
      "title": "Start a background process",
      "topics": [
        "bg_process"
      ]
    },
    {
      "page": "broken_packages",
      "title": "Find out broken packages and reinstall them",
      "topics": [
        "broken_packages"
      ]
    },
    {
      "page": "browser_dom",
      "title": "Execute JavaScript on an HTML page via a headless browser and dump the DOM",
      "topics": [
        "browser_dom"
      ]
    },
    {
      "page": "browser_print",
      "title": "Print a web page to PDF/PNG/JPEG",
      "topics": [
        "browser_print"
      ]
    },
    {
      "page": "bump_version",
      "title": "Bump version numbers",
      "topics": [
        "bump_version"
      ]
    },
    {
      "page": "cache_exec",
      "title": "Cache the execution of an expression in memory or on disk",
      "topics": [
        "cache_exec"
      ]
    },
    {
      "page": "crandalf_check",
      "title": "Submit check jobs to crandalf",
      "topics": [
        "crandalf_check",
        "crandalf_results"
      ]
    },
    {
      "page": "csv_options",
      "title": "Parse comma-separated chunk options",
      "topics": [
        "csv_options"
      ]
    },
    {
      "page": "decimal_dot",
      "title": "Evaluate an expression after forcing the decimal point to be a dot",
      "topics": [
        "decimal_dot"
      ]
    },
    {
      "page": "del_empty_dir",
      "title": "Delete an empty directory",
      "topics": [
        "del_empty_dir"
      ]
    },
    {
      "page": "dir_create",
      "title": "Create a directory recursively by default",
      "topics": [
        "dir_create"
      ]
    },
    {
      "page": "dir_exists",
      "title": "Test the existence of files and directories",
      "topics": [
        "dir_exists",
        "file_exists"
      ]
    },
    {
      "page": "divide_chunk",
      "title": "Divide chunk options from the code chunk body",
      "topics": [
        "divide_chunk"
      ]
    },
    {
      "page": "do_once",
      "title": "Perform a task once in an R session",
      "topics": [
        "do_once"
      ]
    },
    {
      "page": "download_cache",
      "title": "Download a file from a URL and cache it on disk",
      "topics": [
        "download_cache"
      ]
    },
    {
      "page": "download_file",
      "title": "Try various methods to download a file",
      "topics": [
        "download_file"
      ]
    },
    {
      "page": "embed_file",
      "title": "Embed a file, multiple files, or directory on an HTML page",
      "topics": [
        "embed_dir",
        "embed_file",
        "embed_files"
      ]
    },
    {
      "page": "env_option",
      "title": "Retrieve a global option from both 'options()' and environment variables",
      "topics": [
        "env_option"
      ]
    },
    {
      "page": "existing_files",
      "title": "Find file paths that exist",
      "topics": [
        "existing_files"
      ]
    },
    {
      "page": "exit_call",
      "title": "Call 'on.exit()' in a parent function",
      "topics": [
        "exit_call"
      ]
    },
    {
      "page": "fenced_block",
      "title": "Create a fenced block in Markdown",
      "topics": [
        "fenced_block",
        "fenced_div",
        "make_fence"
      ]
    },
    {
      "page": "file_ext",
      "title": "Manipulate filename extensions",
      "topics": [
        "file_ext",
        "sans_ext",
        "with_ext"
      ]
    },
    {
      "page": "file_rename",
      "title": "Rename files and directories",
      "topics": [
        "file_rename"
      ]
    },
    {
      "page": "file_string",
      "title": "Read a text file and concatenate the lines by ''\\n''",
      "topics": [
        "file_string"
      ]
    },
    {
      "page": "find_globals",
      "title": "Find global/local variables in R code",
      "topics": [
        "find_globals",
        "find_locals"
      ]
    },
    {
      "page": "format_bytes",
      "title": "Format numbers of bytes using a specified unit",
      "topics": [
        "format_bytes"
      ]
    },
    {
      "page": "from_root",
      "title": "Get the relative path of a path in a project relative to the current working directory",
      "topics": [
        "from_root"
      ]
    },
    {
      "page": "github_releases",
      "title": "Get the tags of GitHub releases of a repository",
      "topics": [
        "github_releases"
      ]
    },
    {
      "page": "grep_sub",
      "title": "Perform replacement with 'gsub()' on elements matched from 'grep()'",
      "topics": [
        "grep_sub"
      ]
    },
    {
      "page": "gsub_file",
      "title": "Search and replace strings in files",
      "topics": [
        "gsub_dir",
        "gsub_ext",
        "gsub_file",
        "gsub_files"
      ]
    },
    {
      "page": "html_tag",
      "title": "Tools for HTML tags",
      "topics": [
        "html_escape",
        "html_tag",
        "html_value",
        "html_view"
      ]
    },
    {
      "page": "in_dir",
      "title": "Evaluate an expression under a specified working directory",
      "topics": [
        "in_dir"
      ]
    },
    {
      "page": "install_dir",
      "title": "Install a source package from a directory",
      "topics": [
        "install_dir"
      ]
    },
    {
      "page": "install_github",
      "title": "An alias of 'remotes::install_github()'",
      "topics": [
        "install_github"
      ]
    },
    {
      "page": "is_abs_path",
      "title": "Test if paths are relative or absolute",
      "topics": [
        "is_abs_path",
        "is_rel_path"
      ]
    },
    {
      "page": "is_ascii",
      "title": "Check if a character vector consists of entirely ASCII characters",
      "topics": [
        "is_ascii"
      ]
    },
    {
      "page": "is_blank",
      "title": "Test if a character vector consists of blank strings",
      "topics": [
        "is_blank"
      ]
    },
    {
      "page": "is_sub_path",
      "title": "Test if a path is a subpath of a dir",
      "topics": [
        "is_sub_path"
      ]
    },
    {
      "page": "is_web_path",
      "title": "Test if a path is a web path",
      "topics": [
        "is_web_path"
      ]
    },
    {
      "page": "os",
      "title": "Test for types of operating systems",
      "topics": [
        "is_arm64",
        "is_linux",
        "is_macos",
        "is_unix",
        "is_windows"
      ]
    },
    {
      "page": "join_words",
      "title": "Join multiple words into a single string",
      "topics": [
        "join_words"
      ]
    },
    {
      "page": "lazy_save",
      "title": "Save objects to files and lazy-load them",
      "topics": [
        "lazy_load",
        "lazy_save"
      ]
    },
    {
      "page": "magic_path",
      "title": "Find a file or directory under a root directory",
      "topics": [
        "magic_path"
      ]
    },
    {
      "page": "mark_dirs",
      "title": "Mark some paths as directories",
      "topics": [
        "mark_dirs"
      ]
    },
    {
      "page": "md_table",
      "title": "Generate a simple Markdown pipe table",
      "topics": [
        "md_table"
      ]
    },
    {
      "page": "md5",
      "title": "Calculate the MD5 checksums of R objects",
      "topics": [
        "md5"
      ]
    },
    {
      "page": "mime_type",
      "title": "Get the MIME types of files",
      "topics": [
        "mime_type"
      ]
    },
    {
      "page": "msg_cat",
      "title": "Generate a message with 'cat()'",
      "topics": [
        "msg_cat"
      ]
    },
    {
      "page": "native_encode",
      "title": "Try to use the system native encoding to represent a character vector",
      "topics": [
        "native_encode"
      ]
    },
    {
      "page": "new_app",
      "title": "Create or stop a local web application",
      "topics": [
        "new_app",
        "stop_app"
      ]
    },
    {
      "page": "news2md",
      "title": "Convert package news to the Markdown format",
      "topics": [
        "news2md"
      ]
    },
    {
      "page": "normalize_path",
      "title": "Normalize paths",
      "topics": [
        "normalize_path"
      ]
    },
    {
      "page": "numbers_to_words",
      "title": "Convert numbers to English words",
      "topics": [
        "n2w",
        "numbers_to_words"
      ]
    },
    {
      "page": "optipng",
      "title": "Run OptiPNG on all PNG files under a directory",
      "topics": [
        "optipng"
      ]
    },
    {
      "page": "parse_only",
      "title": "Parse R code and do not keep the source",
      "topics": [
        "parse_only"
      ]
    },
    {
      "page": "pkg_attach",
      "title": "Attach or load packages, and automatically install missing packages if requested",
      "topics": [
        "loadable",
        "pkg_attach",
        "pkg_attach2",
        "pkg_available",
        "pkg_load",
        "pkg_load2"
      ]
    },
    {
      "page": "pkg_bib",
      "title": "Generate BibTeX bibliography databases for R packages",
      "topics": [
        "pkg_bib"
      ]
    },
    {
      "page": "post_release",
      "title": "Perform post-CRAN-release routine tasks",
      "topics": [
        "post_release"
      ]
    },
    {
      "page": "proc_kill",
      "title": "Kill a process and (optionally) all its child processes",
      "topics": [
        "proc_kill"
      ]
    },
    {
      "page": "process_file",
      "title": "Read a text file, process the text with a function, and write the text back",
      "topics": [
        "process_file",
        "sort_file"
      ]
    },
    {
      "page": "proj_root",
      "title": "Return the (possible) root directory of a project",
      "topics": [
        "proj_root",
        "root_rules"
      ]
    },
    {
      "page": "prose_index",
      "title": "Find the indices of lines in Markdown that are prose (not code blocks)",
      "topics": [
        "prose_index"
      ]
    },
    {
      "page": "protect_math",
      "title": "Protect math expressions in pairs of backticks in Markdown",
      "topics": [
        "protect_math"
      ]
    },
    {
      "page": "radix_id",
      "title": "Mixed-radix codes and group indices for row combinations",
      "topics": [
        "radix_group",
        "radix_id"
      ]
    },
    {
      "page": "rand_unit",
      "title": "Pseudo-random numbers on [0, 1) based on a linear congruential generator",
      "topics": [
        "rand_unit"
      ]
    },
    {
      "page": "random_port",
      "title": "Find a random available TCP port",
      "topics": [
        "random_port"
      ]
    },
    {
      "page": "raw_string",
      "title": "Print a character vector in its raw form",
      "topics": [
        "print.xfun_raw_string",
        "raw_string"
      ]
    },
    {
      "page": "read_all",
      "title": "Read all text files and concatenate their content",
      "topics": [
        "read_all"
      ]
    },
    {
      "page": "read_bin",
      "title": "Read all records of a binary file as a raw vector by default",
      "topics": [
        "read_bin"
      ]
    },
    {
      "page": "read_utf8",
      "title": "Read / write files encoded in UTF-8",
      "topics": [
        "append_unique",
        "append_utf8",
        "read_utf8",
        "write_utf8"
      ]
    },
    {
      "page": "record",
      "title": "Run R code and record the results",
      "topics": [
        "format.xfun_record_results",
        "print.xfun_record_results",
        "record"
      ]
    },
    {
      "page": "record_print",
      "title": "Print methods for 'record()'",
      "topics": [
        "new_record",
        "record_print",
        "record_print.default",
        "record_print.record_asis"
      ]
    },
    {
      "page": "relative_path",
      "title": "Get the relative path of a path relative to a directory",
      "topics": [
        "relative_path"
      ]
    },
    {
      "page": "rename_seq",
      "title": "Rename files with a sequential numeric prefix",
      "topics": [
        "rename_seq"
      ]
    },
    {
      "page": "rest_api",
      "title": "Get data from a REST API",
      "topics": [
        "github_api",
        "rest_api",
        "rest_api_raw"
      ]
    },
    {
      "page": "retry",
      "title": "Retry calling a function for a number of times",
      "topics": [
        "retry"
      ]
    },
    {
      "page": "rev_check",
      "title": "Run 'R CMD check' on the reverse dependencies of a package",
      "topics": [
        "compare_Rcheck",
        "rev_check"
      ]
    },
    {
      "page": "Rscript",
      "title": "Run the commands 'Rscript' and 'R CMD'",
      "topics": [
        "Rcmd",
        "Rscript"
      ]
    },
    {
      "page": "Rscript_call",
      "title": "Call a function in a new R session via 'Rscript()'",
      "topics": [
        "Rscript_call"
      ]
    },
    {
      "page": "rstudio_type",
      "title": "Type a character vector into the RStudio source editor",
      "topics": [
        "rstudio_type"
      ]
    },
    {
      "page": "same_path",
      "title": "Test if two paths are the same after they are normalized",
      "topics": [
        "same_path"
      ]
    },
    {
      "page": "serve_dir",
      "title": "Serve a static directory",
      "topics": [
        "serve_dir"
      ]
    },
    {
      "page": "session_info",
      "title": "An alternative to sessionInfo() to print session information",
      "topics": [
        "session_info"
      ]
    },
    {
      "page": "set_envvar",
      "title": "Set environment variables",
      "topics": [
        "set_envvar"
      ]
    },
    {
      "page": "shrink_images",
      "title": "Shrink images to a maximum width",
      "topics": [
        "shrink_images"
      ]
    },
    {
      "page": "split_lines",
      "title": "Split a character vector by line breaks",
      "topics": [
        "split_lines"
      ]
    },
    {
      "page": "split_source",
      "title": "Split source lines into complete expressions",
      "topics": [
        "split_source"
      ]
    },
    {
      "page": "str_wrap",
      "title": "Wrap character vectors",
      "topics": [
        "str_wrap"
      ]
    },
    {
      "page": "strict_list",
      "title": "Strict lists",
      "topics": [
        "$.xfun_strict_list",
        "as_strict_list",
        "print.xfun_strict_list",
        "strict_list"
      ]
    },
    {
      "page": "strip_html",
      "title": "Strip HTML tags",
      "topics": [
        "strip_html"
      ]
    },
    {
      "page": "submit_cran",
      "title": "Submit a source package to CRAN",
      "topics": [
        "submit_cran"
      ]
    },
    {
      "page": "system3",
      "title": "A customized wrapper for 'system2()'",
      "topics": [
        "system3"
      ]
    },
    {
      "page": "tabset",
      "title": "Represent a (recursive) list with (nested) tabsets",
      "topics": [
        "tabset",
        "tab_content"
      ]
    },
    {
      "page": "taml_load",
      "title": "A simple YAML reader and writer",
      "topics": [
        "taml_file",
        "taml_load",
        "taml_save"
      ]
    },
    {
      "page": "tinify",
      "title": "Use the Tinify API to compress PNG and JPEG images",
      "topics": [
        "tinify",
        "tinify_dir"
      ]
    },
    {
      "page": "tojson",
      "title": "A simple JSON serializer",
      "topics": [
        "js",
        "json_reviver",
        "json_unpack",
        "json_vector",
        "tojson"
      ]
    },
    {
      "page": "tree",
      "title": "Turn the output of 'str()' into a tree diagram",
      "topics": [
        "tree"
      ]
    },
    {
      "page": "try_error",
      "title": "Try an expression and see if it throws an error",
      "topics": [
        "try_error"
      ]
    },
    {
      "page": "try_silent",
      "title": "Try to evaluate an expression silently",
      "topics": [
        "try_silent"
      ]
    },
    {
      "page": "upload_ftp",
      "title": "Upload to an FTP server via 'curl'",
      "topics": [
        "upload_ftp",
        "upload_win_builder"
      ]
    },
    {
      "page": "upload_imgur",
      "title": "Upload an image to imgur.com",
      "topics": [
        "upload_imgur"
      ]
    },
    {
      "page": "url_accessible",
      "title": "Test if a URL is accessible",
      "topics": [
        "url_accessible"
      ]
    },
    {
      "page": "url_destination",
      "title": "Get the final destination of a URL",
      "topics": [
        "url_destination"
      ]
    },
    {
      "page": "url_filename",
      "title": "Extract filenames from a URLs",
      "topics": [
        "url_filename"
      ]
    },
    {
      "page": "valid_syntax",
      "title": "Check if the syntax of the code is valid",
      "topics": [
        "valid_syntax"
      ]
    },
    {
      "page": "yaml_body",
      "title": "Partition the YAML metadata and the body in a document",
      "topics": [
        "yaml_body"
      ]
    },
    {
      "page": "yaml_load",
      "title": "Read YAML data",
      "topics": [
        "yaml_load"
      ]
    }
  ],
  "_readme": "https://github.com/yihui/xfun/raw/HEAD/README.md",
  "_rundeps": [],
  "_vignettes": [
    {
      "source": "xfun.Rmd",
      "filename": "xfun.html",
      "title": "An Introduction to xfun",
      "author": "Yihui Xie",
      "engine": "litedown::vignette",
      "headings": [
        "Strict lists: disable partial matching",
        "Human-readable output",
        "Print a character vector as-is",
        "Read a text file into the console",
        "A better str() for nested objects",
        "Format byte sizes",
        "String utilities",
        "Filter and transform in one step",
        "Test for blank strings",
        "Combine words into a natural-language list",
        "Generate HTML-safe ID strings",
        "Validate R syntax",
        "Split source into complete expressions",
        "Convert numbers to English words",
        "HTML helpers",
        "Build HTML tags programmatically",
        "Escape special characters for HTML",
        "Strip HTML tags",
        "File I/O",
        "Read and write UTF-8 files",
        "Append unique lines",
        "Concatenate multiple files",
        "Search and replace in files",
        "Replace text in a single file",
        "Replace across multiple files",
        "Transform file content with an arbitrary function",
        "File paths and extensions",
        "Dissect and reassemble file paths",
        "Normalize and compare paths",
        "Find files relative to the project root",
        "Base64 encoding",
        "JSON serialization",
        "Caching expressions",
        "Recording R output",
        "Package utilities",
        "Attach multiple packages at once",
        "Test whether a package is loadable",
        "Environment variables and options",
        "Options that fall back to environment variables",
        "Temporarily set environment variables",
        "Run code in a different directory",
        "OS detection",
        "Error handling",
        "Check whether an expression throws an error",
        "Retry a failing operation",
        "Check reverse dependencies",
        "Type characters into RStudio",
        "Session information",
        "Compact session info",
        "Run a task only once per session"
      ],
      "created": "2018-06-15 18:52:19",
      "modified": "2026-10-14 21:57:31",
      "commits": 23
    }
  ],
  "_score": 18.59408963726718,
  "_indexed": true,
  "_nocasepkg": "xfun",
  "_universes": [
    "yihui"
  ],
  "_previous": "0.61.9",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:40.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/98eefbc9726687d8e3efadefc557a32751a9542ad810d6e7eab95d4424138559",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:47.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/7f959061e34056ca0f1ab6397f90a13d9ae4e45f87b1dfecc9d4319f78b54ac1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:37.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/1cfa076a8415fb96445b294923057e7e1a88a512e404c20a12695cbfc52d729e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.62.1",
      "date": "2026-10-16T07:37:58.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/88a989787f063af3004071a7563b678bfb03dda3c9c032e027995f633f571ae7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.62.1",
      "date": "2026-10-16T07:40:41.000Z",
      "arch": "aarch64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/7ab2d3841b4ef96879aca3ecfa9fc80b2f496b4d0bedc56168d8026aa4db2099",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.62.1",
      "date": "2026-10-16T07:43:05.000Z",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/bc76aa7040c7b5072b4ed7eac712fe34698c6cc258577b9243ba7f6fbf4d76d8",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.62.1",
      "date": "2026-10-16T07:45:26.000Z",
      "arch": "aarch64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/49b5af2fe053db594285e0b0e6cefb30df9b9caf0ef7d9743978e10af3a1f208",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.62.1",
      "date": "2026-10-16T07:42:04.000Z",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/f5dc4e010cb24b8a4d9a29f3f6bb66344fc31616bc52d4eb61f1113551d745d2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:44.000Z",
      "arch": "emscripten",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/8a23edafed921a40ecf8439eaf8e579d7879d12f3b7bae796eb0eb3c3ec866eb",
      "status": "success",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.62.1",
      "date": "2026-10-16T07:31:19.000Z",
      "arch": "aarch64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/c310af0d2231239f15f72eb270619aa9e1f0a7fb88bd8759d004d9227e8fead1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:04.000Z",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/252e78b38c1989b194d0c3f7d0e7fc0a315d010f794c3594dc4430593bcbd6fb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:31.000Z",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/ea33461a3087d930dcb346f493343067619a489bfa7679a9ef476d1ab3828a54",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.62.1",
      "date": "2026-10-16T07:30:06.000Z",
      "arch": "aarch64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/bce1db0c0b4d5faa7ea77422697c32323f7fe006c11aab4ff24f28e1aa682d64",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.62.1",
      "date": "2026-10-16T07:28:02.000Z",
      "arch": "x86_64",
      "commit": "a50d4ef9e21cf946d700b8af83e718dde3bbfe3c",
      "fileid": "https://r2.ropensci.org/7dc48929d7c2024c68a1cd45dd8d378197b250b94772d9f6db9d0488f7056430",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/yihui/actions/runs/38867012406"
    }
  ]
}